<div class="tc-advanced-search">
<<tabs "[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]" "$:/core/ui/AdvancedSearch/System">>
</div>
$:/core/ui/MoreSideBar/All
<div class="tc-control-panel">
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]" "$:/core/ui/ControlPanel/Info">>
</div>
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Show color names that are not part of the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/import": {
"title": "$:/language/Help/import",
"description": "Import tiddlers from a file",
"text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/listen": {
"title": "$:/language/Help/listen",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Renders individual tiddlers to files",
"text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Saves individual raw tiddlers to files",
"text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
"text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler"
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler"
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>"
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"tags": "Journal"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "References"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"title": "$:/core/modules/commander.js",
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/core/modules/commands/build.js",
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/core/modules/commands/clearpassword.js",
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/core/modules/commands/editions.js",
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/core/modules/commands/help.js",
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/core/modules/commands/init.js",
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/core/modules/commands/load.js",
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/core/modules/commands/makelibrary.js",
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/core/modules/commands/output.js",
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/core/modules/commands/password.js",
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/core/modules/commands/rendertiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/core/modules/commands/rendertiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!$tw.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/core/modules/commands/savetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/core/modules/commands/savetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/core/modules/commands/setfield.js",
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/core/modules/commands/unpackplugin.js",
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/core/modules/commands/verbose.js",
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/core/modules/commands/version.js",
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/core/modules/config.js",
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/core/modules/deserializers.js",
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\tthis.domNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/core/modules/filters/addprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/core/modules/filters/addsuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/core/modules/filters/after.js",
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/core/modules/filters/all/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/core/modules/filters/all/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/core/modules/filters/all/orphans.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/core/modules/filters/all/shadows.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/core/modules/filters/all/tiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/core/modules/filters/all.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/core/modules/filters/backlinks.js",
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/core/modules/filters/before.js",
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/core/modules/filters/commands.js",
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = types[type] || types.number,\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar types = {\n\t\"number\": function(a,b) {\n\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t},\n\t\"integer\": function(a,b) {\n\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t},\n\t\"string\": function(a,b) {\n\t\treturn compare(\"\" + a,\"\" +b);\n\t},\n\t\"date\": function(a,b) {\n\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\tdateB = $tw.utils.parseDate(b);\n\t\tif(!isFinite(dateA)) {\n\t\t\tdateA = new Date(0);\n\t\t}\n\t\tif(!isFinite(dateB)) {\n\t\t\tdateB = new Date(0);\n\t\t}\n\t\treturn compare(dateA,dateB);\n\t},\n\t\"version\": function(a,b) {\n\t\treturn $tw.utils.compareVersions(a,b);\n\t}\n};\n\nfunction compare(a,b) {\n\tif(a > b) {\n\t\treturn +1;\n\t} else if(a < b) {\n\t\treturn -1;\n\t} else {\n\t\treturn 0;\n\t}\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/core/modules/filters/each.js",
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/core/modules/filters/eachday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/core/modules/filters/editiondescription.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/core/modules/filters/editions.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/core/modules/filters/field.js",
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/core/modules/filters/fields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/core/modules/filters/get.js",
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/core/modules/filters/getindex.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/core/modules/filters/has.js",
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/core/modules/filters/haschanged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/core/modules/filters/indexes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/core/modules/filters/is/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/core/modules/filters/is/image.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/core/modules/filters/is/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/core/modules/filters/is/orphan.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/core/modules/filters/is/shadow.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/core/modules/filters/is/system.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/core/modules/filters/is/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/core/modules/filters/is/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/core/modules/filters/is.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/core/modules/filters/limit.js",
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/core/modules/filters/links.js",
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/core/modules/filters/list.js",
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/core/modules/filters/listed.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/core/modules/filters/listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/core/modules/filters/modules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/core/modules/filters/moduletypes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/core/modules/filters/next.js",
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/core/modules/filters/plugintiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/core/modules/filters/prefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/core/modules/filters/previous.js",
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/core/modules/filters/regexp.js",
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/core/modules/filters/removeprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/core/modules/filters/removesuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/core/modules/filters/sameday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/core/modules/filters/search.js",
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/core/modules/filters/shadowsource.js",
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/core/modules/filters/sort.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/core/modules/filters/splitbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/core/modules/filters/storyviews.js",
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.trim(a)];}\n);\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/core/modules/filters/suffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/core/modules/filters/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/core/modules/filters/tagging.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/core/modules/filters/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/core/modules/filters/title.js",
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/core/modules/filters/untagged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n /*\n Fetch titles from the current list\n */\n var prepare_results = function (source) {\n var results = [];\n source(function (tiddler, title) {\n results.push(title);\n });\n return results;\n };\n\n /*\n Moves a number of items from the tail of the current list before the item named in the operand\n */\n exports.putbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list after the item named in the operand\n */\n exports.putafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Replaces the item named in the operand with a number of items from the tail of the current list\n */\n exports.replace = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -count) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list to the head of the list\n */\n exports.putfirst = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(-count).concat(results.slice(0, -count));\n };\n\n /*\n Moves a number of items from the head of the current list to the tail of the list\n */\n exports.putlast = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(count).concat(results.slice(0, count));\n };\n\n /*\n Moves the item named in the operand a number of places forward or backward in the list\n */\n exports.move = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1),\n marker = results.splice(index, 1),\n offset = (index + count) > 0 ? index + count : 0;\n return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n };\n\n /*\n Returns the items from the current list that are after the item named in the operand\n */\n exports.allafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(index) :\n results.slice(index + 1);\n };\n\n /*\n Returns the items from the current list that are before the item named in the operand\n */\n exports.allbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(0, index + 1) :\n results.slice(0, index);\n };\n\n /*\n Appends the items listed in the operand array to the tail of the current list\n */\n exports.append = function (source, operator) {\n var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || append.length;\n return (append.length === 0) ? results :\n (operator.prefix) ? results.concat(append.slice(-count)) :\n results.concat(append.slice(0, count));\n };\n\n /*\n Prepends the items listed in the operand array to the head of the current list\n */\n exports.prepend = function (source, operator) {\n var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,prepend.length);\n return (prepend.length === 0) ? results :\n (operator.prefix) ? prepend.slice(-count).concat(results) :\n prepend.slice(0, count).concat(results);\n };\n\n /*\n Returns all items from the current list except the items listed in the operand array\n */\n exports.remove = function (source, operator) {\n var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || array.length,\n p,\n len,\n index;\n len = array.length - 1;\n for (p = 0; p < count; ++p) {\n if (operator.prefix) {\n index = results.indexOf(array[len - p]);\n } else {\n index = results.indexOf(array[p]);\n }\n if (index !== -1) {\n results.splice(index, 1);\n }\n }\n return results;\n };\n\n /*\n Returns all items from the current list sorted in the order of the items in the operand array\n */\n exports.sortby = function (source, operator) {\n var results = prepare_results(source);\n if (!results || results.length < 2) {\n return results;\n }\n var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n results.sort(function (a, b) {\n return lookup.indexOf(a) - lookup.indexOf(b);\n });\n return results;\n };\n\n /*\n Removes all duplicate items from the current list\n */\n exports.unique = function (source, operator) {\n var results = prepare_results(source);\n var set = results.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n return set;\n };\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/core/modules/filters.js",
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tArray.prototype.push.apply(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tif(results.length === 0) {\n\t\t\t\t\t\t\t// Main result so far is empty\n\t\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/core/modules/info/platform.js",
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/core/modules/language.js",
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/core/modules/macros/changecount.js",
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/core/modules/macros/contrastcolour.js",
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/core/modules/macros/csvtiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/core/modules/macros/jsontiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/core/modules/macros/now.js",
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/core/modules/macros/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/core/modules/macros/resolvepath.js",
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/core/modules/macros/version.js",
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/core/modules/parsers/audioparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/core/modules/parsers/csvparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/core/modules/parsers/htmlparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/core/modules/parsers/imageparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/core/modules/utils/parseutils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/core/modules/parsers/textparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/core/modules/pluginswitcher.js",
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/core/modules/saver-handler.js",
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/core/modules/savers/andtidwiki.js",
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/core/modules/savers/download.js",
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/core/modules/savers/fsosaver.js",
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/core/modules/savers/manualdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/core/modules/savers/msdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/core/modules/savers/tiddlyfox.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/core/modules/savers/tiddlyie.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/core/modules/savers/twedit.js",
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/core/modules/savers/upload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve($tw.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\");\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve($tw.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif($tw.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif($tw.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"path-prefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/core/modules/browser-messaging.js",
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/core/modules/startup/commands.js",
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/core/modules/startup/favicon.js",
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/core/modules/startup/info.js",
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\tvar fields = {\n\t\ttitle: TITLE_INFO_PLUGIN,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/core/modules/startup/load-modules.js",
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/core/modules/startup/password.js",
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/core/modules/startup/render.js",
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/core/modules/startup/rootwidget.js",
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/core/modules/startup.js",
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\tvar executeStartupTiddlers = function(tag) {\n\t\t$tw.utils.each($tw.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\t\t$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);\n\t\t});\n\t};\n\texecuteStartupTiddlers(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/core/modules/startup/story.js",
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\t$tw.wiki.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t},{\n\t\t\tname: \"click\",\n\t\t\thandlerObject: $tw.popup,\n\t\t\thandlerMethod: \"handleEvent\"\n\t\t}]);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/core/modules/storyviews/classic.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/core/modules/storyviews/pop.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/core/modules/storyviews/zoomin.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && $tw.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t};\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif($tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t};\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || $tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/core/modules/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/core/modules/upgraders/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = $tw.wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? ($tw.wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/core/modules/upgraders/system.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/core/modules/upgraders/themetweaks.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)(e=r.charCodeAt(t))<128?o+=String.fromCharCode(e):e>127&&e<2048?(o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128)):(o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128));return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)(t=r.charCodeAt(o))<128?(e+=String.fromCharCode(t),o++):t>191&&t<224?(e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2):(e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3);return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var n=0;n<t.length;n++)o[t[n]]=o.require(t[n]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,n,i,d,f,a,h,c=\"\",u=0;u<r.length;)d=(t=r.charCodeAt(u++))>>2,f=(3&t)<<4|(n=r.charCodeAt(u++))>>4,a=(15&n)<<2|(i=r.charCodeAt(u++))>>6,h=63&i,isNaN(n)?a=h=64:isNaN(i)&&(h=64),c+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return c},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,n,i,d,f,a,h=\"\",c=0;c<r.length;)t=o.indexOf(r.charAt(c++))<<2|(d=o.indexOf(r.charAt(c++)))>>4,n=(15&d)<<4|(f=o.indexOf(r.charAt(c++)))>>2,i=(3&f)<<6|(a=o.indexOf(r.charAt(c++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(n)),64!=a&&(h+=String.fromCharCode(i));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/core/modules/utils/crypto.js",
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/core/modules/utils/dom/animations/slide.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/core/modules/utils/dom/animator.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/core/modules/utils/dom/browser.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/core/modules/utils/dom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/core/modules/utils/dom/http.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!$tw.utils.hop(headers,\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/core/modules/utils/dom/modal.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/core/modules/utils/dom/notifier.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/core/modules/utils/dom/popup.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/core/modules/utils/dom/scroller.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/core/modules/utils/edition-info.js",
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/core/modules/utils/fakedom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/core/modules/utils/filesystem.js",
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {};\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\tfilepath;\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// If not, generate a base pathname\n\tif(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t// Don't let the filename start with a dot because such files are invisible on *nix\n\tfilepath = filepath.replace(/^\\./g,\"_\");\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/core/modules/utils/logger.js",
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/core/modules/utils/parsetree.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/core/modules/utils/performance.js",
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/core/modules/utils/pluginmaker.js",
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/core/modules/utils/utils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s) {\n\t// See http://www.json.org/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/core/modules/widgets/action-deletefield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/core/modules/widgets/action-navigate.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords);\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/core/modules/widgets/action-sendmessage.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/core/modules/widgets/action-setfield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/core/modules/widgets/browse.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/core/modules/widgets/button.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\t\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/core/modules/widgets/checkbox.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/core/modules/widgets/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/core/modules/widgets/count.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = event.ctrlKey && ! event.shiftKey ? \"ctrl\" : event.shiftKey && !event.ctrlKey ? \"shift\" : \n\t\t\t\tevent.ctrlKey && event.shiftKey ? \"ctrl-shift\" : \"normal\" ;\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag || changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/core/modules/widgets/dropzone.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/core/modules/widgets/edit-binary.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/core/modules/widgets/edit-bitmap.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/core/modules/widgets/edit-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/core/modules/widgets/edit.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder},\n\t\t\t\"tabindex\": {type: \"string\", value: this.editTabIndex},\n\t\t\t\"focus\": {type: \"string\", value: this.editFocus}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/core/modules/widgets/element.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\ttag = \"h\" + headingLevel;\n\t}\n\t// Create the DOM node\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/core/modules/widgets/encrypt.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/core/modules/widgets/entity.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/core/modules/widgets/fieldmangler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/core/modules/widgets/fields.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/core/modules/widgets/image.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/core/modules/widgets/importvariables.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.makeChildWidgets([node]);\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/core/modules/widgets/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/core/modules/widgets/link.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/core/modules/widgets/linkcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/core/modules/widgets/list.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/core/modules/widgets/macrocall.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/core/modules/widgets/navigator.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.wiki.addToStory(title,fromTitle,this.storyTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\tthis.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/core/modules/widgets/password.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n \t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n \t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\t\t\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField || \"text\",\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue || \"\");\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue || \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\t\t\t\t\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/core/modules/widgets/reveal.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/core/modules/widgets/scrollable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/core/modules/widgets/select.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/core/modules/widgets/set.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/core/modules/widgets/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/core/modules/widgets/transclude.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/core/modules/widgets/view.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/core/modules/widgets/widget.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/core/modules/wiki.js",
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\t\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\t\t\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/GruvboxDark": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox Dark",
"description": "Retro groove color scheme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "https://github.com/morhetz/gruvbox",
"text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #504945\nbutton-foreground: #fbf1c7\nbutton-border: transparent\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: #7c6f64\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #282828\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: <<colour button-background>>\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"description": "An arctic, north-bluish color palette.",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
"text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #4C566A\nbutton-foreground: #D8DEE9\nbutton-border: transparent\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #2e3440\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarizedLight": {
"title": "$:/palettes/SolarizedLight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedLight",
"text": "alert-background: #eee8d5\nalert-border: #073642\nalert-highlight: #cb4b16\nalert-muted-foreground: #586e75\nbackground: #fdf6e3\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #cb4b16\nbutton-foreground: #fdf6e3\nbutton-border: transparent\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #d33682\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #859900\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #D08770\ndownload-background: #859900\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #fdf6e3\ndropdown-tab-background: #93a1a1\ndropzone-background: #859900\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: #d33682\nexternal-link-foreground-visited: #b58900\nexternal-link-foreground: #cb4b16\nforeground: #839496\nmessage-background: #586e75\nmessage-border: #586e75\nmessage-foreground: #eee8d5\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #eee8d5\nmodal-footer-background: #eee8d5\nmodal-footer-border: #eee8d5\nmodal-header-border: #eee8d5\nmuted-foreground: #93a1a1\nnotification-background: #EBCB8B\nnotification-border: #D08770\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #93a1a1\nprimary: #2aa198\nselect-tag-background: #eee8d5\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: #eee8d5\nsidebar-controls-foreground-hover: #268bd2\nsidebar-controls-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #839496\nsidebar-muted-foreground-hover: #657b83\nsidebar-muted-foreground: #93a1a1\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-background: #839496\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #657b83\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #839496\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #859900\nsidebar-tiddler-link-foreground: #268bd2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #dc322f\ntab-background-selected: #fdf6e3\ntab-background: #839496\ntab-border-selected: #93a1a1\ntab-border: #93a1a1\ntab-divider: #fdf6e3\ntab-foreground-selected: #839496\ntab-foreground: #eee8d5\ntable-border: #657b83\ntable-footer-background: #657b83\ntable-header-background: #93a1a1\ntag-background: #6c71c4\ntag-foreground: #eee8d5\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #b58900\ntiddler-controls-foreground-selected: #b58900\ntiddler-controls-foreground: #073642\ntiddler-editor-background: #eee8d5\ntiddler-editor-border-image: #eee8d5\ntiddler-editor-border: #eee8d5\ntiddler-editor-fields-even: #eee8d5\ntiddler-editor-fields-odd: #fdf6e3\ntiddler-info-background: #eee8d5\ntiddler-info-border: #eee8d5\ntiddler-info-tab-background: #586e75\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #586e75\ntiddler-title-foreground: #073642\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #839496\nvery-muted-foreground: #93a1a1\n"
},
"$:/palettes/SpartanDay": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n$tw.preloadTiddlerArray([{\n\ttitle: \"$:/config/SaveWikiButton/Template\",\n\ttext: \"$:/core/save/all-external-js\"\n}]);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n<$vars imageType={{$:/config/NewImageType}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags={{$:/config/NewTiddler/Tags!!tags}}/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "<$action-sendmessage $message=\"tm-new-tiddler\" tags={{$:/config/NewTiddler/Tags!!tags}}/>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewTiddler/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewJournal/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[title]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[title]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[title]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/core/ui/ControlPanel/Saving/GitHub",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/core/ui/ControlPanel/Saving/GitLab",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/core/ui/ControlPanel/Saving/Gitea",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}}></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>> \n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=<<newFieldNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}}/>\n</span> \n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> \n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}}/>\n</$keyboard>\n</$set>\n</span> \n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\"/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>\n</$list>\n<$set name=\"tabIndex\" value={{$:/config/EditTabIndex}}>\n<$macrocall $name=\"tag-picker\"/>\n</$set>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}}/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\whitespace trim\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}}/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "\\define save-tiddler-button()\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/linkify": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Transcludify/Hint}}",
"icon": "$:/core/images/transcludify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((transcludify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" stateTitle=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcut/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcut/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-enable-drag-and-drop\" value={{$:/config/DragAndDrop/Enable}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip=<<lingo Delete/Hint>> aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"> <<lingo Names/External/Show>></$checkbox>\n\n<<palette-manager-table>>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" />\n</div>"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">{{$:/core/images/close-button}}</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"searchTerm\" value={{{ [<searchTiddler>get[text]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search<searchTerm>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\"/>\n\n</div>\n"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags!!tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags!!tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.22/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "no"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}\n><div class=\"tc-swatch\" style=<<swatchStyle>> title=<<colour>>/></$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n</$type$>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker-inner()\n\\whitespace trim\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=<<newTagNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n<<add-tag-actions>>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$set name=\"newTagName\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]!is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n<hr>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n\\end\n\\define tag-picker()\n\\whitespace trim\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=<<tag-picker-inner>>>\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<<tag-picker-inner>>\n</$set>\n</$list>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/tags/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/PluginLibrary": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/tags/SideBarSegment",
"list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
<svg class="tc-image-close-button tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt">
<g fill-rule="evenodd">
<path d="M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z"></path>
</g>
</svg>
\whitespace trim
<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/close-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text">
<$text text={{$:/language/Buttons/Close/Caption}}/>
</span>
</$list>
</$button>
<div class="twocolumns">
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/>
</div>
\define config-title()
$:/config/PageControlButtons/Visibility/$(listItem)$
\end
<div class="tc-page-controls">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
<$reveal type="nomatch" state=<<config-title>> text="hide">
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
<$transclude tiddler=<<listItem>> mode="inline"/>
</$set>
</$reveal>
</$list>
</div>
<center>
{{$:/core/ui/PageTemplate/pagecontrols}}
</center>
{{$:/core/ui/SideBarSegments/search}}
<<tabs "$:/core/ui/SideBar/Open $:/core/ui/SideBar/Recent GP">>
<center><div class="tc-sidebar-lists">
<$set name="searchTiddler" value="$:/temp/search">
<div class="tc-search">
<$edit-text tiddler="$:/temp/search" type="search" tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">> class="tc-popup-handle"/>
<$reveal state="$:/temp/search" type="nomatch" text="">
<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search}}/>
<$action-setfield $tiddler="$:/temp/search" text=""/>
<$action-navigate $to="$:/AdvancedSearch"/>
{{$:/core/images/advanced-search-button}}
</$button>
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/search" text="" />
{{$:/core/images/close-button}}
</$button>
<$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible">
{{$:/core/images/down-arrow}}
<$list filter="[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
<$set name="searchTerm" value={{{ [<searchTiddler>get[text]] }}}>
<$set name="resultCount" value="""<$count filter="[!is[system]search<searchTerm>]"/>""">
{{$:/language/Search/Matches}}
</$set>
</$set>
</$list>
</$button>
</$reveal>
<$reveal state="$:/temp/search" type="match" text="">
<$button to="$:/AdvancedSearch" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class="tc-btn-invisible">
{{$:/core/images/advanced-search-button}}
</$button>
</$reveal>
</div>
<$reveal tag="div" class="tc-block-dropdown-wrapper" state="$:/temp/search" type="nomatch" text="">
<$reveal tag="div" class="tc-block-dropdown tc-search-drop-down tc-popup-handle" state=<<qualify "$:/state/popup/search-dropdown">> type="nomatch" text="" default="">
<$list filter="[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
{{$:/core/ui/SearchResults}}
</$list>
</$reveal>
</$reveal>
</$set>
</div>
</center>
<div class="tc-site-subtitle">
<$transclude tiddler="$:/SiteSubtitle" mode="inline"/>
</div>
<center><h1 class="tc-site-title">
<$transclude tiddler="$:/SiteTitle" mode="inline"/>
</h1></center>
<div class="tc-sidebar-lists">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]" default={{$:/config/DefaultSidebarTab}} state="$:/state/tab/sidebar" />
</div>
<$reveal state="$:/state/sidebar" type="nomatch" text="no">
<$button set="$:/state/sidebar" setTo="no" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-right}}</$button>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no">
<$button set="$:/state/sidebar" setTo="yes" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-left}}</$button>
</$reveal>
<$reveal tag="div" class="tc-tiddler-body" type="nomatch" stateTitle=<<folded-state>> text="hide" retain="yes" animate="yes">
<$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]">
<$transclude>
<$transclude tiddler="$:/language/MissingTiddler/Hint"/>
</$transclude>
</$list>
</$reveal>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-subtitle">
<$link to={{!!modifier}}>
<$view field="modifier"/>
</$link> <$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
</div>
</$reveal>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-tags-wrapper"><$list filter="[all[current]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/></div>
</$reveal>
\define title-styles()
fill:$(foregroundColor)$;
\end
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<div class="tc-tiddler-title">
<div class="tc-titlebar">
<span class="tc-tiddler-controls">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>
</span>
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
<$link>
<$set name="foregroundColor" value={{!!color}}>
<span class="tc-tiddler-title-icon" style=<<title-styles>>>
<$transclude tiddler={{!!icon}}/>
</span>
</$set>
<$list filter="[all[current]removeprefix[$:/]]">
<h2 class="tc-title" title={{$:/language/SystemTiddler/Tooltip}}>
<span class="tc-system-title-prefix">$:/</span><$text text=<<currentTiddler>>/>
</h2>
</$list>
<$list filter="[all[current]!prefix[$:/]]">
<h2 class="tc-title">
<$view field="title"/>
</h2>
</$list>
</$link>
</$set>
</div>
<$reveal type="nomatch" text="" default="" state=<<tiddlerInfoState>> class="tc-tiddler-info tc-popup-handle" animate="yes" retain="yes">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]" variable="listItem"><$transclude tiddler=<<listItem>> mode="block"/></$list>
</$reveal>
</div>
The following tiddlers were imported:
# [[$:/AdvancedSearch]]
# [[$:/config/AnimationDuration]]
# [[$:/config/AutoSave]]
# [[$:/config/DefaultMoreSidebarTab]]
# [[$:/config/DownloadSaver/AutoSave]]
# [[$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4]]
# [[$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5]]
# [[$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6]]
# [[$:/config/Manager/Order]]
# [[$:/config/Manager/Show]]
# [[$:/config/Manager/Sort]]
# [[$:/config/MissingLinks]]
# [[$:/config/Navigation/openLinkFromInsideRiver]]
# [[$:/config/Navigation/Permalinkview/CopyToClipboard]]
# [[$:/config/Navigation/Permalinkview/UpdateAddressBar]]
# [[$:/config/Navigation/UpdateAddressBar]]
# [[$:/config/Navigation/UpdateHistory]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-tiddler]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/save-wiki]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager]]
# [[$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all]]
# [[$:/config/RelinkOnRename]]
# [[$:/config/TextEditor/EnableToolbar]]
# [[$:/config/Toolbar/ButtonClass]]
# [[$:/config/Toolbar/Text]]
# [[$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit]]
# [[$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold]]
# [[$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar]]
# [[$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others]]
# [[$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions]]
# [[$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window]]
# [[$:/config/WikiParserRules/Inline/wikilink]]
# [[$:/ControlPanel]]
# [[$:/core/images/close-button]]
# [[$:/core/ui/Buttons/close]]
# [[$:/core/ui/MoreSideBar/Recent]]
# [[$:/core/ui/PageTemplate/pagecontrols]]
# [[$:/core/ui/SideBarSegments/page-controls]]
# [[$:/core/ui/SideBarSegments/search]]
# [[$:/core/ui/SideBarSegments/site-subtitle]]
# [[$:/core/ui/SideBarSegments/site-title]]
# [[$:/core/ui/SideBarSegments/tabs]]
# [[$:/core/ui/TopBar/menu]]
# [[$:/core/ui/ViewTemplate/body]]
# [[$:/core/ui/ViewTemplate/subtitle]]
# [[$:/core/ui/ViewTemplate/tags]]
# [[$:/core/ui/ViewTemplate/title]]
# [[$:/DefaultTiddlers]]
# [[$:/isEncrypted]]
# [[$:/Manager]]
# [[$:/SiteSubtitle]]
# [[$:/SiteTitle]]
# [[$:/status/UserName]]
# [[$:/tags/SideBarSegment]]
# [[$:/tags/ViewTemplate]]
# [[$:/theme]]
# [[$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth]]
# [[$:/themes/tiddlywiki/vanilla/options/sidebarlayout]]
# [[$:/themes/tiddlywiki/vanilla/options/stickytitles]]
# [[$:/themes/tiddlywiki/vanilla/settings/editorfontfamily]]
# [[$:/themes/tiddlywiki/vanilla/settings/fontfamily]]
# [[$:/UploadBackupDir]]
# [[$:/UploadDir]]
# [[$:/UploadFilename]]
# [[$:/UploadName]]
# [[$:/UploadURL]]
# [[$:/view]]
# [[AAA]]
# [[Abdominal Cramps Rx]]
# [[Abdominal wall hernias]]
# [[AbdPain]]
# [[abdpain.gif]]
# [[abdpainfemale.gif]]
# [[AbdStomas]]
# [[AcanThosis]]
# [[ACE]]
# [[AchaLasia]]
# [[Achilles tendon disorders]]
# [[AcneVulgaris]]
# [[AcroMegaly]]
# [[Acromegaly: features]]
# [[ACS]]
# [[AcuAsthma]]
# [[AcuAsthmaMx]]
# [[AcuCholecystitis]]
# [[AcuConfusion]]
# [[AcuEpiglottitis]]
# [[AcuPancreatitis]]
# [[AcuPericarditis]]
# [[AcuSinuSitis]]
# [[Acute Abdomen]]
# [[Acute Abdomen Protocol]]
# [[Acute Agitation]]
# [[Acute Alcoholism Rx]]
# [[Acute Constipation Rx]]
# [[Acute Diarrhea]]
# [[Acute Diarrhea Rx]]
# [[Acute Gastroenteritis]]
# [[Acute Pyelonephritis]]
# [[Acute Urethral Syndrome]]
# [[Acute Urinary Retention]]
# [[AcuUGIBleed]]
# [[AddiSon]]
# [[AddiSonIx]]
# [[AddiSonMx]]
# [[AdenoSine]]
# [[Adhesive capsulitis]]
# [[adi_css]]
# [[ADi’s Quick Guide]]
# [[Admission Orders]]
# [[ADPKD]]
# [[AdultALS]]
# [[AIHA]]
# [[AKI]]
# [[AKI Protocol]]
# [[AKI RIFLE Score]]
# [[AlCohol]]
# [[Alcohol - problem drinking: management]]
# [[Alcohol: units]]
# [[AlcoholWithdrawal]]
# [[AllergicConjunctivitis]]
# [[Allergy tests]]
# [[Allopurinol]]
# [[Alopecia]]
# [[Alopecia Areata]]
# [[AlPorts]]
# [[Alteplase]]
# [[AlZheimer]]
# [[AminoSalicylate]]
# [[AmioDarone]]
# [[AML]]
# [[Amoebiasis Rx]]
# [[Amoebic Dysentery]]
# [[AnaphyLaxis]]
# [[ANCA]]
# [[AneMia]]
# [[AnGina]]
# [[AngioDysplasia]]
# [[AngioEdema]]
# [[AnkleSprain]]
# [[AnKylosing]]
# [[AnoRexia]]
# [[AnteNatalCheckup]]
# [[AnteriorUveitis]]
# [[AntiAnginalsSidefx]]
# [[AntiBiotics]]
# [[Antibiotics of Choice]]
# [[Antibiotics: protein synthesis inhibitors]]
# [[AntiDote]]
# [[AntiFungals]]
# [[AntiHistamine]]
# [[Antinatal Care]]
# [[AntiPhospholipid]]
# [[AntiPlatelets]]
# [[AntiPsychotics]]
# [[AorticRegurgitation]]
# [[AorticStenosis]]
# [[AorticStenosisKids]]
# [[APGAR]]
# [[AphaSia]]
# [[AphoNia]]
# [[ARB]]
# [[Argyll-Robertson pupil]]
# [[Arrhythmia]]
# [[ArthriTis]]
# [[Arthropod Borne Encephalitis]]
# [[ARVC]]
# [[AsbesTosis]]
# [[Ascites-Cirrhosis Protocol]]
# [[Ascites/Portal HTN Rx]]
# [[Aspiration]]
# [[AsPirin]]
# [[Aspirin]]
# [[Asthma in children: assessment of acute attacks]]
# [[Asthma: diagnosis]]
# [[AsthmaMxAdults]]
# [[AsthmaMxChildren]]
# [[AtrFib]]
# [[AtrFib: cardioversion]]
# [[Atrial Fib/Flutter Protocol]]
# [[Atrial fibrillation: post-stroke]]
# [[AtrialMyxoma]]
# [[Atropine]]
# [[AtypicalAntiPsychotic]]
# [[AudioGram]]
# [[Autoimmune hepatitis]]
# [[AutosomalDominant]]
# [[AutosomalRecessive]]
# [[AVBlock]]
# [[AzaThioprine]]
# [[Bacterial Dysentery]]
# [[Bacterial Meningitis]]
# [[BCC]]
# [[BehCet]]
# [[BeLL]]
# [[BerGers]]
# [[BetaBlocker Overdose]]
# [[BetaBlockers]]
# [[BileAcid]]
# [[BisPhosphonates]]
# [[BiTe]]
# [[BivaliRudin]]
# [[Bleeding in pregnancy]]
# [[BNP]]
# [[BoneConditions]]
# [[BoTox]]
# [[Boxer fracture]]
# [[BPH]]
# [[BPPV]]
# [[Bradycardia]]
# [[Bradycardia Protocol]]
# [[Brain Abscess]]
# [[BrainAbscess]]
# [[BreaSt]]
# [[BreastCancer]]
# [[BreastCancerMx]]
# [[BreastFeeding Prescribing]]
# [[BreastFeeding Problems]]
# [[BreastLump]]
# [[BronchioLitis]]
# [[BruGada]]
# [[BuerGer]]
# [[BullousPemphigoid]]
# [[BurKitt]]
# [[Burns]]
# [[BZD]]
# [[CAH]]
# [[Cancer in the UK]]
# [[CancerRx]]
# [[Candida CNS Infection]]
# [[CAP]]
# [[CarbamaZepine]]
# [[CarbonMonoxideTox]]
# [[CarcinoGen]]
# [[CardiacTamponade]]
# [[Cardiology]]
# [[CardioMyopathy]]
# [[CarpalTunnel]]
# [[CataPlexy]]
# [[CatScratch]]
# [[CCB]]
# [[CdiFF]]
# [[CeLiac]]
# [[Central Line Placement]]
# [[Cerebral Perfusion Pressure]]
# [[Cervical cancer screening]]
# [[CervicalCa]]
# [[CervicalCaScreen]]
# [[Chest Infections]]
# [[Chest Pain]]
# [[Chest Tube Placement]]
# [[Chest X-ray]]
# [[ChickenPox in Pregnancy]]
# [[Child health surveillance]]
# [[Childhood Issues]]
# [[ChlamyDia]]
# [[ChlamydiaTrachomatis]]
# [[Choice of Antihypertensives]]
# [[ChoKing]]
# [[CholanGitis]]
# [[Cholecystitis-Cholangitis]]
# [[Cholera]]
# [[CholeSteatoma]]
# [[ChorioRetinitis]]
# [[ChrFatigue]]
# [[Chronic Constipation Rx]]
# [[Chronic Diarrhea Rx]]
# [[CicloSporin]]
# [[Cirrhotic Patients]]
# [[CKD]]
# [[CKD Classification]]
# [[CKD Protocol-RKMS]]
# [[CLL]]
# [[ClopidoGrel]]
# [[closeme]]
# [[closex]]
# [[ClosTridium]]
# [[ClusTer]]
# [[CML]]
# [[CNS Infections]]
# [[Coagulopathy]]
# [[CoCaine]]
# [[Cochlear Implants]]
# [[COCP Contraindications]]
# [[COCP Counselling]]
# [[COCP: advantages/disadvantages]]
# [[Coeliac disease in children]]
# [[ColonCa Genetics]]
# [[Colonoscopy Preparation Rx]]
# [[Colorectal cancer: screening]]
# [[Coma-Confusion]]
# [[Common peroneal nerve lesion]]
# [[Consent in children]]
# [[Constipation]]
# [[Contents]]
# [[ContraCeption]]
# [[COPD Acute Exacerbation]]
# [[COPD Exacerbation Protocol]]
# [[COPD Ix]]
# [[COPD Ix Dx]]
# [[COPD Stable Mx]]
# [[CornealUlcer]]
# [[CorticoSteroids]]
# [[Cough]]
# [[Cow's milk protein intolerance]]
# [[CranialN]]
# [[Criteria and Scoring]]
# [[Critical Care]]
# [[Critical Care - 100kg]]
# [[Critical Care - 10kg/1yr]]
# [[Critical Care - 12kg/2yr]]
# [[Critical Care - 15kg/4yr]]
# [[Critical Care - 20kg/6yr]]
# [[Critical Care - 25kg/8yr]]
# [[Critical Care - 3.5kg]]
# [[Critical Care - 35kg/10yr]]
# [[Critical Care - 50kg]]
# [[Critical Care - 5kg/2m]]
# [[Critical Care - 6kg/4m]]
# [[Critical Care - 70kg]]
# [[Critical Care - 8kg/6m]]
# [[CriticalCare]]
# [[CrOhn]]
# [[Croup]]
# [[CRVO]]
# [[CryoGlobulinemia]]
# [[CSF]]
# [[CuShing]]
# [[CysticFibrosis]]
# [[Cytotoxic agents]]
# [[CytP450]]
# [[DactyLitis]]
# [[DCM]]
# [[DDH]]
# [[Death Note]]
# [[Degenerative cervical myelopathy]]
# [[Delirium Tremens]]
# [[DeLusion]]
# [[DeMentia]]
# [[DePression Vs DeMentia]]
# [[DermaTome]]
# [[DI]]
# [[Diabetes Meds]]
# [[DiabeticRetinopathy]]
# [[DiabeticRx]]
# [[DiGoxin]]
# [[DiGoxinTox]]
# [[Diltiazem]]
# [[Diphtheria]]
# [[Discitis]]
# [[DisciTis]]
# [[DiscProlapse]]
# [[Disorders of sex hormones]]
# [[Diverticulitis]]
# [[Diverticulitis Rx]]
# [[Diverticulosis]]
# [[Dizziness]]
# [[DKA]]
# [[dka.gif]]
# [[DKA/HHS Protocol]]
# [[Dobutamine]]
# [[Dopamine]]
# [[DoWn]]
# [[Down's syndrome: vision and hearing problems]]
# [[Drug Doses in Renal Impairment]]
# [[Drug monitoring]]
# [[Drug Tradenames]]
# [[Drug-induced impaired glucose tolerance]]
# [[Drug-induced liver disease]]
# [[Drug-induced lupus]]
# [[Drugs]]
# [[Dry eyes]]
# [[DucheneBecker]]
# [[DVLA]]
# [[DVT]]
# [[Dyselectrolytemia Protocol]]
# [[DysMenorrhoea]]
# [[DysPepsia]]
# [[Dyspepsia Rx]]
# [[DysPhagia]]
# [[Dyspnea]]
# [[DysTocia]]
# [[Dysuria]]
# [[ECG Changes]]
# [[ECG: axis deviation]]
# [[ECG: HypoKalemia]]
# [[ECG: HypoThermia]]
# [[ECG: PR interval]]
# [[ECG: ST elevation]]
# [[ECG: T wave]]
# [[Ecstasy poisoning]]
# [[Edema]]
# [[Edema Etiology]]
# [[EhlerDanlos]]
# [[EID ContraCeption]]
# [[EKG]]
# [[Elbow pain]]
# [[Electrolytes in EKG]]
# [[Elevated LDH Causes]]
# [[EmergencyContraCeption]]
# [[EndoMetriosis]]
# [[Endometritis]]
# [[Enteric/Typhoid Fever]]
# [[EosinophilicEsophagitis]]
# [[EpididymoOrchitis]]
# [[EpiLepsy]]
# [[EpiLepsy ContraCeption]]
# [[EpiLepsyRx]]
# [[Epinephrine/Adrenaline]]
# [[EpiScleritis]]
# [[EpisTaxis]]
# [[Erosive Esophagitis Rx]]
# [[ErythemaMultiforme]]
# [[EssentialTremor]]
# [[EuThyroid]]
# [[Eye Infections]]
# [[Eye Problems]]
# [[Eyelid problems]]
# [[EzetiMibe]]
# [[FactorV]]
# [[Falls]]
# [[Fav's]]
# [[FBS]]
# [[FemaleCancers]]
# [[FerriTin]]
# [[Fever]]
# [[Fever and Rash]]
# [[Fever Protocol]]
# [[FiBroid]]
# [[FinaSteride]]
# [[FingerDeformities]]
# [[Fissure Rx]]
# [[Flank Pain]]
# [[Fluid And Electrolytes]]
# [[FoLate]]
# [[Foley Catheter Insertion]]
# [[Foley Catheter Problems]]
# [[Forearm flexor muscles]]
# [[Fracture Complications]]
# [[Fractures]]
# [[FriedReichs]]
# [[Fungal Infections]]
# [[G6PD]]
# [[Gallstone Px]]
# [[GastricCa]]
# [[GastroEnteritis]]
# [[Gastroenteritis Protocol]]
# [[Gastroenteritis Rx]]
# [[Gastroenterology]]
# [[Gastrointestinal Infections]]
# [[GCS]]
# [[Genital warts]]
# [[GenitalUlcer]]
# [[Genitourinary Infections]]
# [[GeographicTongue]]
# [[GI Bleeding]]
# [[GiarDiasis]]
# [[GilBerts]]
# [[GlipTin]]
# [[GlueEar]]
# [[GMC guidance: Acting as a legal witness]]
# [[GoNorrhoea]]
# [[GoodPasture]]
# [[GORD]]
# [[GouT]]
# [[Gout Mx]]
# [[GouT Mx]]
# [[GP]]
# [[GP-Drugs]]
# [[GranulomaAnnulare]]
# [[GraVes]]
# [[Graves' disease: management]]
# [[Group B Streptococcus]]
# [[GuiLLain]]
# [[GuTTate]]
# [[GynecoMastia]]
# [[GynecoMastia AE]]
# [[H Pylori Infection]]
# [[Haemorrhoids]]
# [[Hand, foot and mouth disease]]
# [[HashiMotos]]
# [[HbA1c]]
# [[HCC]]
# [[Head and Neck Cancer]]
# [[Head and Neck Infections]]
# [[HeadAche]]
# [[HeadAche Adverse]]
# [[HeadAche in children]]
# [[HeadAche Red Flags]]
# [[HeadInjury]]
# [[HearingTestsKids]]
# [[Heavy menstrual bleeding: management]]
# [[HelicoBacter]]
# [[Hematochezia]]
# [[HemaTuria]]
# [[HemoChromatosis]]
# [[HemopTysis]]
# [[Hemorrhoids Rx]]
# [[HeParin]]
# [[Hepatitis Rx]]
# [[HepatoBiliary Diseases]]
# [[HepatoRenal]]
# [[HepB]]
# [[HepB Serology]]
# [[HepC]]
# [[HepD]]
# [[Herpes zoster]]
# [[Herpes zoster ophthalmicus]]
# [[HerpesKeratitis]]
# [[HerpetiCum]]
# [[HerpetiFormis]]
# [[HF]]
# [[hhs.gif]]
# [[HHT]]
# [[Hiccups Rx]]
# [[Hip pain in adults]]
# [[Hip Problems in Children]]
# [[HirschSprung]]
# [[Hirsutism and hypertrichosis]]
# [[HIV: diarrhoea]]
# [[HIV: Kaposi's sarcoma]]
# [[HLA]]
# [[HoarseNess]]
# [[HOCM]]
# [[Holmes-Adie pupil]]
# [[HomoCystinuria]]
# [[HONK]]
# [[Horner'sSyndrome]]
# [[Hospital Acquired Diarrhea]]
# [[HpyLori Tests]]
# [[HRT]]
# [[HSP]]
# [[HSV]]
# [[HSV Keratitis]]
# [[HTN]]
# [[HTN Adverse]]
# [[HuntingTons]]
# [[HUS]]
# [[HyperAldosteronism]]
# [[HyperCalcemia]]
# [[Hyperglycemia]]
# [[HyperHidrosis]]
# [[HyperKalemia]]
# [[Hyperkalemia Protocol]]
# [[HyperNatremia]]
# [[Hypernatremia Protocol]]
# [[HyperSensitivity]]
# [[Hypertension]]
# [[Hypertension in pregnancy]]
# [[Hypertensive retinopathy]]
# [[HypoCalcemia]]
# [[Hypoglycemia]]
# [[HypoKalemia]]
# [[Hypokalemia-RKMS]]
# [[Hypokalemia/Potassium Replacement Protocol]]
# [[Hypomagnesemia]]
# [[HypoMania]]
# [[HypoNatremia]]
# [[Hyponatremia Approach]]
# [[Hyponatremia Protocol]]
# [[HypoNatremiaAE]]
# [[Hypophosphatemia]]
# [[HypoSpadias]]
# [[Hypotension]]
# [[HypoTension AE]]
# [[HypoThermia]]
# [[Hypothyroidism in children]]
# [[HypoThyroidism: Causes]]
# [[HypoThyroidismMx]]
# [[HypoTonia]]
# [[IBD]]
# [[IBS]]
# [[IBS Rx]]
# [[ICHTNAE]]
# [[ICU Daily Assessment]]
# [[ICU Infusions]]
# [[ICVT]]
# [[Immunisation]]
# [[ImplantableContraceptive]]
# [[Incision & Drainage]]
# [[Infectious Diseases]]
# [[Infective Endocarditis]]
# [[Infective endocarditis: prophylaxis]]
# [[InFertility]]
# [[Influenza]]
# [[Infusions]]
# [[InheritedJaundice]]
# [[Injectable contraceptives]]
# [[Insomnia]]
# [[Insulin Sliding Scale]]
# [[Intracranial Epidural Abscess]]
# [[Intracranial Hemorrhage Protocol]]
# [[Ischemic Stroke Protocol]]
# [[Isolated systolic hypertension]]
# [[Isoproterenol]]
# [[IUCD]]
# [[IvaBradine]]
# [[Jaundice]]
# [[JVP]]
# [[KartaGener]]
# [[KawaSaki]]
# [[KeLoid]]
# [[KeraTitis]]
# [[Ketamine]]
# [[KidsHF]]
# [[KlineFelters]]
# [[KneeProblems]]
# [[KSparing]]
# [[LabialAdhesions]]
# [[LamoTrigine]]
# [[LarvaMigrans]]
# [[Lateral Epicondylitis]]
# [[LBBB]]
# [[LBP]]
# [[LeadTox]]
# [[Leg Ulcers]]
# [[LegioNella]]
# [[Lens dislocation]]
# [[LeWy]]
# [[LichenPlanus]]
# [[LiThium]]
# [[LiThiumTox]]
# [[Liver Abscess]]
# [[LoopDiuretics]]
# [[Lorazepam]]
# [[Lower GI Bleed Protocol]]
# [[LowerLimbNerves]]
# [[LQTS]]
# [[Lumbar Puncture]]
# [[Lumbar spinal stenosis]]
# [[Lung Abscess-Empyema]]
# [[LungFibrosisAE]]
# [[LUTS in Men]]
# [[LyMe]]
# [[MacroCytic]]
# [[MacroLides]]
# [[MaCular]]
# [[MalaRia]]
# [[Malaria: prophylaxis]]
# [[MalignantMelanoma]]
# [[Marcus-Gunn Pupil]]
# [[MarFan]]
# [[McCune]]
# [[MeaSles]]
# [[Measurements]]
# [[MecKels]]
# [[MeconiumAspiration]]
# [[MeconiumIleus]]
# [[Mediastinitis]]
# [[MefloQuine]]
# [[MeGlitinides]]
# [[MelanosisColi]]
# [[MEN]]
# [[MeNiere]]
# [[MeninGitis]]
# [[Meningitis Protocol]]
# [[MeningitisInKidsIxMx]]
# [[MenoPause]]
# [[Menopause: premature]]
# [[MenoRRhagia]]
# [[MenstrualCycle]]
# [[MentalCapacityAct]]
# [[MentalHealthAct]]
# [[MerAlgia]]
# [[MetFormin]]
# [[MethoTrexate]]
# [[MetoClopramide]]
# [[MetroNidazole]]
# [[MGUS]]
# [[MI Complications]]
# [[MicroCephaly]]
# [[MicroCytic]]
# [[Midazolam]]
# [[Migraine: diagnostic criteria]]
# [[MiGraineMx]]
# [[MildDepression]]
# [[MileStones]]
# [[MiLia]]
# [[Minimal change disease]]
# [[Misc]]
# [[MisCarriage]]
# [[Miscellaneous]]
# [[MitralStenosis]]
# [[MittelSchmerz]]
# [[MMR]]
# [[MolluscumContagiosum]]
# [[Monkey Bite]]
# [[MotorNeuron]]
# [[Mouth lesions]]
# [[MRSA]]
# [[MSRA]]
# [[Mucus Diarrhea Rx]]
# [[Multiple sclerosis: management]]
# [[MultipleSclerosis]]
# [[MultipleSystemAtrophy]]
# [[MurMur]]
# [[My Coding Practice]]
# [[MycoPlasma]]
# [[MycosisFungoides]]
# [[Myocardial infarction: secondary prevention]]
# [[MyoTonic]]
# [[NAFLD]]
# [[NasalPolyp]]
# [[Nasolacrimal duct obstruction]]
# [[Nausea & Vomiting]]
# [[Nausea & Vomiting Rx]]
# [[NeckLumps]]
# [[NecroTising]]
# [[Neonatal blood spot screening]]
# [[NeonatalBiliousVomiting]]
# [[NeonatalJaundice]]
# [[NeonatalVomiting]]
# [[Nephrology]]
# [[Nephrotoxicity due to contrast media]]
# [[NeurAlgia]]
# [[NeuroFibromatosis]]
# [[Neurology]]
# [[Neurosyphilis]]
# [[NG Tube Insertion]]
# [[NicoranDil]]
# [[Nicotine Replacment]]
# [[NicotinicAcid]]
# [[NiTrates]]
# [[Nitroglycerine]]
# [[Nitroprusside]]
# [[NIV]]
# [[NMS]]
# [[NOAC]]
# [[NodoSum]]
# [[NonGonococcal]]
# [[Noradrenaline]]
# [[NormoCytic]]
# [[OA]]
# [[ObGynDrugs]]
# [[Obstetric Infections]]
# [[OesoPhageal]]
# [[OHSS]]
# [[OlecranonBursitis]]
# [[OligoHydramnios]]
# [[Oliguria & Anuria]]
# [[OnychoMycosis]]
# [[OpenAngle]]
# [[OpticNeuritis]]
# [[Oral Candidiasis Rx]]
# [[Oral lesions]]
# [[OrganoPhosTox]]
# [[Orotracheal Intubation]]
# [[OsteoGenesis]]
# [[Osteomalacia]]
# [[OsteoMalacia]]
# [[OsteoPorosis]]
# [[Osteoporosis: Assessing patients following a fragility fracture]]
# [[Osteoporosis: Assessing Risk]]
# [[Osteoporosis: glucocorticoid-induced]]
# [[OsteoPorosisMx]]
# [[Otitis media]]
# [[OtitisExterna]]
# [[OtitisMedia]]
# [[Otosclerosis]]
# [[Ovarian enlargement: management]]
# [[OvarianCa]]
# [[OvarianCyst]]
# [[PAD]]
# [[Paediatric drug doses: emergency]]
# [[Palliative care prescribing: pain]]
# [[Palliative Medicines]]
# [[PalliativeCare]]
# [[PAN]]
# [[PanCreatitis Adverse]]
# [[Paracentesis]]
# [[Paracetamol overdose: management]]
# [[ParaNeoplastic]]
# [[ParKinson]]
# [[ParKinsonsMx]]
# [[PBC]]
# [[PCOD]]
# [[PDA]]
# [[PDE5 Blockers]]
# [[PE Ix]]
# [[Pediatric Diarrhea Rx]]
# [[Pediatric Medications edit]]
# [[PediatricBLS]]
# [[PediatricRash]]
# [[PediatricSyndromes]]
# [[Pelvic pain]]
# [[PemphigusVulgaris]]
# [[PenileCa]]
# [[PEP]]
# [[Perforated tympanic membrane]]
# [[Peri-arrest rhythms: tachycardia]]
# [[PeriNeuro Adverse]]
# [[Peripheral neuropathy]]
# [[PeripheralSmear]]
# [[Personality disorders]]
# [[PerThe]]
# [[PeuTz]]
# [[PFT]]
# [[PhenylKetonuria]]
# [[PhenyToin]]
# [[PheochromoCytoma]]
# [[PID]]
# [[PiTyriasis]]
# [[PityriasisVersicolor]]
# [[PleuralEffusion]]
# [[PleuralEffusion Ix Mx]]
# [[PMR]]
# [[PneuMonia]]
# [[Pneumonia Protocol]]
# [[Pneumonia Rx]]
# [[Pneumonia: assessment and management]]
# [[PNH]]
# [[Poisoning]]
# [[PolyCythemia]]
# [[POP]]
# [[Post-partum mental health problems]]
# [[Post-thrombotic syndrome]]
# [[PostCataractSx]]
# [[Postcoital bleeding]]
# [[PostTerm]]
# [[PPH]]
# [[PPI]]
# [[Prediabetes and impaired glucose regulation]]
# [[Pregnancy: diabetes mellitus]]
# [[Pregnancy: jaundice]]
# [[PregnancySubstanceAbuse]]
# [[Premature Ovarian Failure]]
# [[Prescribing in HF]]
# [[Prescribing in Pregnancy]]
# [[PreVia]]
# [[PrimaryHyperParaThyroidism]]
# [[Procedural Sedation]]
# [[Procedures]]
# [[Prolactin and Galactorrhoea]]
# [[ProLactinoma]]
# [[Propofol]]
# [[Prostatitis]]
# [[Prosthetic heart valves]]
# [[Protocols]]
# [[PruriTus]]
# [[PSC]]
# [[PseudoGout]]
# [[PSGN]]
# [[PsoRiasis]]
# [[PsoRiasisMx]]
# [[PsoriasisMx]]
# [[Psoriatic arthropathy]]
# [[Psychosis]]
# [[PTSD]]
# [[PuerperalPyrexia]]
# [[PulmFibrosis]]
# [[PulmonaryEmbolism: Mx]]
# [[Pulmonology]]
# [[PulSe]]
# [[PurPura]]
# [[PyloricStenosis]]
# [[Pyoderma gangrenosum]]
# [[Pyogenic granuloma]]
# [[Quick ED Reference]]
# [[QuinoLones]]
# [[RA]]
# [[RadialN]]
# [[RamSey]]
# [[RayNaud]]
# [[RBBB]]
# [[RCC]]
# [[RDS]]
# [[Rectal Pain]]
# [[RedEye]]
# [[ReiTer]]
# [[Renal Abscess]]
# [[RenalStonesMx]]
# [[RenalTransplantRx]]
# [[RespPathogen]]
# [[Restless legs syndrome]]
# [[RetiniTis]]
# [[RetinitisPigmentosa]]
# [[RetinoBlastoma]]
# [[RetiNoid]]
# [[Review]]
# [[ReYe]]
# [[RhabdoMyolysis]]
# [[Rhesus negative pregnancy]]
# [[RheumatoidAntibodies]]
# [[RheumaToidMx]]
# [[RheumaToidOcular]]
# [[RheumatoidRxSidefx]]
# [[RieDels]]
# [[RingWorm]]
# [[RinneWeber]]
# [[RNA viruses]]
# [[RoLandic]]
# [[RosaCea]]
# [[RoseOla]]
# [[RotatorCuff]]
# [[Safe Prescription]]
# [[SAH]]
# [[SalicylateTox]]
# [[Salivary glands]]
# [[SarcoiDosis]]
# [[SBP]]
# [[ScarLet]]
# [[SCC]]
# [[SchistoSomiasis]]
# [[SchizoPhreniaMx]]
# [[SciaticN]]
# [[Scrotal Pain]]
# [[Scrotal problems]]
# [[Search]]
# [[SeborrhoeicDermatitis]]
# [[SeborrhoeicKeratoses]]
# [[Secondary Peritonitis]]
# [[Seizures]]
# [[Seizures Acute Mx]]
# [[SeiZures Adverse]]
# [[SepSis]]
# [[SeptalPerforation]]
# [[Septic Dural Sinus]]
# [[SepticArthritis]]
# [[Severe Pancreatitis]]
# [[Shin Lesions]]
# [[Shock Protocol]]
# [[SIADH]]
# [[SickleCell Crises]]
# [[Sidefx of common drugs: antibiotics]]
# [[Silicosis]]
# [[simple_search]]
# [[Skin and Connective Tissue Infections]]
# [[Skin disorders affecting the soles of the feet]]
# [[Skin disorders associated with diabetes]]
# [[SLE]]
# [[Smoking cessation]]
# [[SOB Chronic]]
# [[SOFA Score]]
# [[SoreThroat]]
# [[SpheroCytosis]]
# [[Spinal Epidural Abscess]]
# [[SpironoLactone]]
# [[SplenoMegaly]]
# [[Spontaneous Bacterial Peritonitis]]
# [[Squint]]
# [[SSRI]]
# [[St John's Wort]]
# [[Standard Ordersets]]
# [[StaTin]]
# [[STEMI Mx]]
# [[STEMI Orders]]
# [[StroKe]]
# [[StroKe: Mx]]
# [[StrokeAnatomy]]
# [[StrongyLoides]]
# [[Subacute (De Quervain's) thyroiditis]]
# [[SubClinical HypoThyroidism]]
# [[Sudden loss of vision]]
# [[Sudden Testicular Pain]]
# [[Sudden-onset sensorineural hearing loss]]
# [[Suicide: Risks]]
# [[SulfonylUrea]]
# [[Suture Basics]]
# [[SVT Protocol]]
# [[Symphysis-fundal height]]
# [[Syncope]]
# [[syntax examples]]
# [[SyPhilis]]
# [[Syringomyelia]]
# [[system_adimin]]
# [[SystemicSclerosis]]
# [[Table Of Contents]]
# [[Tachycardia]]
# [[Tagpils]]
# [[TakayaSus]]
# [[Tamoxifen]]
# [[TB]]
# [[TB Rx Action SidEfx]]
# [[TCA]]
# [[TelangiEctasia]]
# [[TetraCycline]]
# [[ThiaMine]]
# [[ThiaZide]]
# [[ThiazolidineDiones]]
# [[Third N palsy]]
# [[Thoracentesis]]
# [[Thought Disorders]]
# [[Threadworms]]
# [[Thrombocytopenia]]
# [[ThromboCytosis]]
# [[Thrombolysis]]
# [[Thrombolysis in ACS]]
# [[ThyroidDisorders]]
# [[TIA]]
# [[TinniTus]]
# [[TOF]]
# [[TraneXamic]]
# [[Transfusion Reaction]]
# [[TransientSynovitis]]
# [[Trauma]]
# [[Traumatic Brain Injury]]
# [[TrichoMonas]]
# [[Trichomoniasis]]
# [[TrigeminalNeuralgia]]
# [[TripTans]]
# [[TrophoBlastic]]
# [[Tropical Fevers]]
# [[TrypanoSomiasis]]
# [[Tubercular Meningitis]]
# [[Tuberculosis: drug therapy]]
# [[TuberousSclerosis]]
# [[TumorMarkers]]
# [[Tunnel Vision]]
# [[TurNer]]
# [[Type 1 Diabetes Mellitus: Management]]
# [[Type 2 Diabetes Mellitus: diagnosis]]
# [[Type 2 Diabetes Mellitus: Management]]
# [[Ulcerative Colitis Rx]]
# [[UlcerativeColitis]]
# [[UlcerativeColitisMx]]
# [[Uncomplicated Gonococcal Infections]]
# [[Unconscious Pt Protocol]]
# [[Unexplained symptoms]]
# [[Upper GI Bleed Protocol]]
# [[Upper limb fractures]]
# [[UpperLimb Anatomy]]
# [[uptodate]]
# [[UpToDate]]
# [[UrinaryIncontinence]]
# [[UrinaryRetentionDrug-induced]]
# [[Urosepsis]]
# [[UTI]]
# [[UTI in Adults: Mx]]
# [[Vaccination Schedule]]
# [[Vaccinations]]
# [[Vaginal Bleeding]]
# [[Vaginal Candidiasis]]
# [[VagiNosis]]
# [[ValProate]]
# [[VaricealBleeding Mx]]
# [[VaricoCele]]
# [[VascularDementia]]
# [[Vasectomy]]
# [[Vecuronium]]
# [[VenousUlcer]]
# [[Ventilator Management]]
# [[Ventilator Settings]]
# [[Ventilator Settings in ICU]]
# [[VertiGo]]
# [[Vertigo / Dizziness Rx]]
# [[Vestibular schwannoma (acoustic neuroma)]]
# [[VestibularNeuronitis]]
# [[ViralLabyrinthitis]]
# [[Visual Impairment]]
# [[VisualField]]
# [[ViTals]]
# [[Vitamin Deficiency]]
# [[VitaminD]]
# [[VitiliGo]]
# [[VonWillebrand]]
# [[VT Protocol]]
# [[VWD]]
# [[Warfarin INR Mx]]
# [[Weakness]]
# [[WeGeners]]
# [[WerNicke]]
# [[Wheeze]]
# [[Whipple'sDisease]]
# [[WhooPing]]
# [[WilM]]
# [[WilSon]]
# [[Worm Infestation Rx]]
# [[Wound Management]]
# [[WPW]]
# [[XanThoma]]
# [[XlinkedDominant]]
# [[XlinkedRecessive]]
# [[ZinC]]
\define lingo-base() $:/language/Manager/
\define list-item-content-item()
<div class="tc-manager-list-item-content-item">
<$vars state-title="""$:/state/popup/manager/item/$(listItem)$""">
<$reveal state=<<state-title>> type="match" text="show" default="show" tag="div">
<$button set=<<state-title>> setTo="hide" class="tc-btn-invisible tc-manager-list-item-content-item-heading">
{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field="caption"/>
</$button>
</$reveal>
<$reveal state=<<state-title>> type="nomatch" text="show" default="show" tag="div">
<$button set=<<state-title>> setTo="show" class="tc-btn-invisible tc-manager-list-item-content-item-heading">
{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field="caption"/>
</$button>
</$reveal>
<$reveal state=<<state-title>> type="match" text="show" default="show" tag="div" class="tc-manager-list-item-content-item-body">
<$transclude tiddler=<<listItem>>/>
</$reveal>
</$vars>
</div>
\end
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Show/Prompt>> <$select tiddler="$:/config/Manager/Show" default="tiddlers">
<option value="tiddlers"><<lingo Controls/Show/Option/Tiddlers>></option>
<option value="tags"><<lingo Controls/Show/Option/Tags>></option>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
<<lingo Controls/FilterByTag/Prompt>> <$select tiddler="$:/config/Manager/Tag" default="">
<option value=""><<lingo Controls/FilterByTag/None>></option>
<$list filter="[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/Sort" default="title">
<optgroup label="Common">
<$list filter="title modified modifier created creator created" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</optgroup>
<optgroup label="All">
<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</optgroup>
</$select>
<$checkbox tiddler="$:/config/Manager/Order" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$checkbox tiddler="$:/config/Manager/System" field="text" checked="" unchecked="system" default="system">
{{$:/language/SystemTiddlers/Include/Prompt}}
</$checkbox>
</div>
</div>
<div class="tc-manager-list">
<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]">
<$vars transclusion=<<currentTiddler>>>
<div style="tc-manager-list-item">
<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading" selectedClass="tc-manager-list-item-heading-selected">
<$text text=<<currentTiddler>>/>
</$button>
<$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle">
<div class="tc-manager-list-item-content-tiddler">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]" variable="listItem">
<<list-item-content-item>>
</$list>
</div>
<div class="tc-manager-list-item-content-sidebar">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]" variable="listItem">
<<list-item-content-item>>
</$list>
</div>
</$reveal>
</div>
</$vars>
</$list>
</div>
</div>
$:/core/ui/SideBar/Recent
$:/core/ui/ControlPanel/Plugins/Installed/Plugins
$:/core/ui/ControlPanel/Saving
$:/core/ui/ControlPanel/Saving/GitHub
{
"tiddlers": {
"$:/info/browser": {
"title": "$:/info/browser",
"text": "yes"
},
"$:/info/node": {
"title": "$:/info/node",
"text": "no"
},
"$:/info/url/full": {
"title": "$:/info/url/full",
"text": "https://geekmedic.github.io/notes/"
},
"$:/info/url/host": {
"title": "$:/info/url/host",
"text": "geekmedic.github.io"
},
"$:/info/url/hostname": {
"title": "$:/info/url/hostname",
"text": "geekmedic.github.io"
},
"$:/info/url/protocol": {
"title": "$:/info/url/protocol",
"text": "https:"
},
"$:/info/url/port": {
"title": "$:/info/url/port",
"text": ""
},
"$:/info/url/pathname": {
"title": "$:/info/url/pathname",
"text": "/notes/"
},
"$:/info/url/search": {
"title": "$:/info/url/search",
"text": ""
},
"$:/info/url/origin": {
"title": "$:/info/url/origin",
"text": "https://geekmedic.github.io"
},
"$:/info/browser/screen/width": {
"title": "$:/info/browser/screen/width",
"text": "1792"
},
"$:/info/browser/screen/height": {
"title": "$:/info/browser/screen/height",
"text": "1120"
},
"$:/info/browser/language": {
"title": "$:/info/browser/language",
"text": "en-US"
}
}
}
$:/themes/tiddlywiki/vanilla
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-color: transparent;\n}\n\n\"\"\">>\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n \tcursor: pointer;\n\tcolor: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: text-bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: 20%;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n\nselect {\n color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
}
}
}
-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"
!!Abdominal Aortic Aneurysms
occur primarily as a result of the failure of elastic proteins within the extracellular matrix. Aneurysms typically represent dilation of all layers of the arterial wall. Most aneurysms are caused by degenerative disease.
* `After the age of 50 years the normal diameter of the infrarenal aorta is 1.5cm in females and 1.7cm in males`
*//Dilatation of >50% of its original diameter// (i.e., 3cm in general)
;AAA is 3A
:3cm at 50y
The pathophysiology involved in the development of aneurysms is complex and the primary event is loss of the intima with loss of elastic fibres from the media. This process is associated with, and potentiated by, increased proteolytic activity and lymphocytic infiltration.
!!!Major risk factors
* Smoking
* HTN
* Male (Female is risk for Rupture)
* Family history
* Rare but important causes include syphilis and connective tissues diseases such as Ehlers Danlos type 1 and Marfans syndrome.
!!!Management and Screening
* Screening
**In the UK, `all men aged 65 years are offered aneurysm screening with a single abdominal ultrasound`
**Screening has shown to decrease death from abdominal aortic aneurysm by 44% over 4 years.
* `Offer Elective Repair`
** `5.5cm or greater` (60% of patients reach this stage)
** `Increasing >1cm per year`
** `Symptomatic`
;Scene Sixty - FINE below FIFE FIFE
:''S''creen at ''S''ixty Five - Offer Surgery at 5.5
* The greater the diameter the greater the risk of rupture
**< 1% per year in <5.5cm
**10% per year in 5.5cm
**25% per year in >6cm
**75% per year in 10cm
| !ABDOMINAL CRAMPS DRUGS |<|
|Camylophin|Tab Anafortan TDS, 3 days OR<br>Inj Anafortan 1 amp IM/IV STAT<br>Syr Anafortan 1 tsp TDS 125mg/5ml TDS, 5 days|
|Codiene+<br>Papaverine|Inj Spasmindon 1 amp IM STAT|
|Dicyclomine+<br>EhylMorphine|Tab Spasmindon STAT then SOS abdominal pain|
|Dicyclomine(10 mg) + <br>Dimethicone(40 mg)|Dps Spasmindon 10 dps TDS<br>Dps Colimex 10mg/ml 10 dps TDS, 5 days<br>Dps Cyclopam10mg/ml 10 dps TDS, 5 days<br>Syr Colimex 10mg/5ml 1 tsp TDS, 3 days (0.5/kg-dose)<br>Syr Cyclopam 10mg/5ml 1 tsp TDS, 3 days (0.5/kg-dose)|
|Dicyclomine+<br>Mefenamic acid|Tab Meftal spas BD, 3 days|
|Dicyclomine+<br>PCM+Tramadol|Cap Spasmoproxyvon Plus BD, 3 da|
|Dicyclomine+PCM|Tab Colimex TDS, 3 days<br>Tab Cyclopam TDS, 3 days<br>Tab Colirid TDS, 3 days|
|Drotaverine|Tab Drotikind 40 mg TDS, 3 days<br>Inj Drotikind 1 amp IM STAT|
|Drotaverine+<br>Mefenamic acid|Tab Drotikind-M BD/TDS, 3 ds|
|Drotaverine+PCM|Tab Drotin Plus BD/TDS 3 day<br>Syr Drotin (10 mg) 1 tsp TDS 3 days|
|Hyoscyamine|Tab Buscopan 10 mg TDS, 3 days<br>Inj Buscopan IM STAT, SOS abd pain|
|Hyoscyamine+<br>PCM|Tab Buscopan Plus TDS, 3 days|
|FOR INFANT COLIC|Dps Colicaid 10 dps TDS, 1wk<br>Dps Bonnisan 10 dps TDS, 1wk|
<div id="notecontent">The classical surgical definition of a hernia is the protrusion of an organ or the fascia of an organ through the wall of the cavity that normally contains it.<br><br>Risk factors for abdominal wall hernias include:<br><ul><li>obesity</li><li>ascites</li><li>increasing age</li><li>surgical wounds</li></ul><br>Features<br><ul><li>palpable lump</li><li>cough impulse</li><li>pain</li><li>obstruction: more common in femoral hernias</li><li>strangulation: may compromise the bowel blood supply leading to infarction</li></ul><br>Types of abdominal wall hernias:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Type of hernia</b></th><th><b>Details</b></th></tr></thead><tbody><tr><td><b>Inguinal hernia</b></td><td>Inguinal hernias account for 75% of abdominal wall hernias. Around 95% of patients are male; men have around a 25% lifetime risk of developing an inguinal hernia.<br>Above and medial to pubic tubercle <br>Strangulation is rare</td></tr><tr><td><b>Femoral hernia</b></td><td>Below and lateral to the pubic tubercle<br>More common in women, particularly multiparous ones<br>High risk of obstruction and strangulation<br>Surgical repair is required</td></tr><tr><td><b>Umbilical hernia</b></td><td>Symmetrical bulge under the umbilicus</td></tr><tr><td><b>Paraumbilical hernia</b></td><td>Asymmetrical bulge - half the sac is covered by skin of the abdomen directly above or below the umbilicus</td></tr><tr><td><b>Epigastric hernia</b></td><td>Lump in the midline between umbilicus and the xiphisternum<br>Most common in men aged 20-30 years</td></tr><tr><td><b>Incisional hernia</b></td><td>May occur in up to 10% of abdominal operations</td></tr><tr><td><b>Spigelian hernia</b></td><td>Also known as lateral ventral hernia<br>Rare and seen in older patients<br>A hernia through the spigelian fascia (the aponeurotic layer between the rectus abdominis muscle medially and the semilunar line laterally)</td></tr><tr><td><b>Obturator hernia</b></td><td>A hernia which passes through the obturator foramen. More common in females and typical presents with bowel obstruction</td></tr><tr><td><b>Richter hernia</b></td><td>A rare type of hernia where only the antimesenteric border of the bowel herniates through the fascial defect<br><br><span class="concept" data-cid="9580">Richter's hernia can present with strangulation without symptoms of obstruction</span></td></tr></tbody></table></div><br>Abdominal wall hernias in children:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Type of hernia</b></th><th><b>Details</b></th></tr></thead><tbody><tr><td><b>Congenital inguinal hernia</b></td><td>Indirect hernias resulting from a patent processus vaginalis<br>Occur in around 1% of term babies. More common in premature babies and boys<br>60% are right sided, 10% are bilaterally<br><span id="concept_popover_id_483" class="concept concept-3-u trigger-link" data-cid="483" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative483'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating483' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(5,255,0)'>Importance: <b>99</b></span> </div>" data-original-title="Congenital hernias
- inguinal: repair ASAP
- umbilical: manage conservatively">Should be surgically repaired soon after diagnosis as at risk of incarceration</span></td></tr><tr><td><b>Infantile umbilical hernia</b></td><td>Symmetrical bulge under the umbilicus <br>More common in premature and Afro-Caribbean babies<br><span id="concept_popover_id_483" class="concept concept-3-u trigger-link" data-cid="483" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative483'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating483' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(5,255,0)'>Importance: <b>99</b></span> </div>" data-original-title="Congenital hernias
- inguinal: repair ASAP
- umbilical: manage conservatively">The vast majority resolve without intervention before the age of 4-5 years</span><br>Complications are rare</td></tr></tbody></table></div></div>
<div id="body_content">
The table below gives characteristic exam question features for conditions causing abdominal pain. Unusual and 'medical' causes of abdominal pain should also be remembered:<br><ul><li>myocardial infarction</li><li>diabetic ketoacidosis</li><li>pneumonia</li><li>acute intermittent porphyria</li><li>lead poisoning</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Condition</b></th><th><b>Characteristic exam feature</b></th></tr></thead><tbody><tr><td>Peptic ulcer disease</td><td><span class="concept" data-cid="6943">Duodenal ulcer</span>s: more common than <span class="concept" data-cid="6944">gastric ulcer</span>s, epigastric pain relieved by eating<br>Gastric ulcers: epigastric pain worsened by eating<br>Features of upper gastrointestinal haemorrhage may be seen (haematemesis, melena etc)</td></tr><tr><td>Appendicitis</td><td>Pain initial in the central abdomen before localising to the right iliac fossa<br>Anorexia is common<br>Tachycardia, low-grade pyrexia, tenderness in RIF<br>Rovsing's sign: more pain in RIF than LIF when palpating LIF</td></tr><tr><td>Acute pancreatitis</td><td>Usually due to alcohol or gallstones<br>Severe epigastric pain<br>Vomiting is common<br>Examination may reveal tenderness, ileus and low-grade fever<br>Periumbilical discolouration (Cullen's sign) and flank discolouration (Grey-Turner's sign) is described but rare</td></tr><tr><td><span class="concept" data-cid="6945">Biliary colic</span></td><td>Pain in the RUQ radiating to the back and interscapular region, may be following a fatty meal. Slight misnomer as the pain may persist for hours<br>Obstructive jaundice may cause pale stools and dark urine<br>It is sometimes taught that patients are female, forties, fat and fair although this is obviously a generalisation</td></tr><tr><td><span class="concept" data-cid="6946">Acute cholecystitis</span></td><td>History of gallstones symptoms (see above)<br>Continuous RUQ pain<br>Fever, raised inflammatory markers and white cells<br>Murphy's sign positive (arrest of inspiration on palpation of the RUQ)</td></tr><tr><td><span class="concept" data-cid="6947">Diverticulitis</span></td><td>Colicky pain typically in the LLQ<br>Fever, raised inflammatory markers and white cells</td></tr><tr><td><span class="concept" data-cid="6948">Abdominal aortic aneurysm</span></td><td>Severe central abdominal pain radiating to the back<br>Presentation may be catastrophic (e.g. Sudden collapse) or sub-acute (persistent severe central abdominal pain with developing shock)<br>Patients may have a history of cardiovascular disease</td></tr><tr><td><span class="concept" data-cid="6949">Intestinal obstruction</span></td><td>History of malignancy/previous operations<br>Vomiting<br>Not opened bowels recently<br>'Tinkling' bowel sounds</td></tr></tbody></table></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd520b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd520.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd520b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Diagram showing stereotypical areas where particular conditions present. The diagram is not exhaustive and only lists the more common conditions seen in clinical practice. Note how pain from renal causes such as renal/ureteric colic and pyelonephritis may radiate and move from the loins towards the suprapubic area.<br></div></div>
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
<div id="body_content">
Stomas may be sited during a range of abdominal procedures and involve bringing the lumen or visceral contents onto the skin. In most cases, this applies to the bowel. However, other organs or their contents may be diverted in case of need. <br><br>With bowel stomas, the type method of construction and to a lesser extent the site will be determined by the contents of the bowel. In practice, small bowel stomas should be spouted so that their irritant contents are not in contact with the skin. Colonic stomas do not need to be spouted as their contents are less irritant. <br><br>In the ideal situation, the site of the stoma should be marked with the patient prior to surgery. Stoma siting is important as it will ultimately influence the ability of the patient to manage their stoma and also reduce the risk of leakage. Leakage of stoma contents and subsequent maceration of the surrounding skin can rapidly progress into a spiralling loss of control of stoma contents. <br><br><b>Types of stomas</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Name of stoma</b></th><th><b>Use</b></th><th><b>Common sites</b></th></tr></thead><tbody><tr><td>Gastrostomy</td><td><ul><li>Gastric decompression or fixation</li><li>Feeding</li></ul></td><td>Epigastrium</td></tr><tr><td>Loop jejunostomy</td><td><ul><li>Seldom used as very high output</li><li>May be used following emergency laparotomy with planned early closure</li></ul></td><td>Any location according to need</td></tr><tr><td>Percutaneous jejunostomy</td><td><ul><li>Usually performed for feeding purposes and site in the proximal bowel</li></ul></td><td>Usually left upper quadrant</td></tr><tr><td>Loop ileostomy</td><td><ul><li>Defunctioning of colon e.g. following rectal cancer surgery</li><li>Does not decompress colon (if ileocaecal valve competent)</li></ul></td><td>Usually right iliac fossa</td></tr><tr><td>End ilestomy</td><td><ul><li>Usually following complete excision of colon or where ileocolic anastomosis is not planned</li><li>May be used to defunction colon, but reversal is more difficult</li></ul></td><td>Usually right iliac fossa</td></tr><tr><td>End colostomy</td><td>Where a colon is diverted or resected and anastomosis is not primarily achievable or desirable</td><td>Either left or right iliac fossa</td></tr><tr><td>Loop colostomy</td><td><ul><li>To defunction a distal segment of colon</li><li>Since both lumens are present the distal lumen acts as a vent</li></ul></td><td>May be located in any region of the abdomen, depending upon colonic segment used</td></tr><tr><td>Caecostomy</td><td>Stoma of last resort where loop colostomy is not possible</td><td>Right iliac fossa</td></tr><tr><td>Mucous fistula</td><td><ul><li>To decompress a distal segment of bowel following colonic division or resection</li><li>Where closure of a distal resection margin is not safe or achievable</li></ul></td><td>May be located in any region of the abdomen according to clinical need</td></tr></tbody></table></div></div>
<div id="body_content">
Describes symmetrical, brown, velvety plaques that are often found on the neck, axilla and groin.<br><br>Causes<br><ul><li><span class="concept" data-cid="2611">type 2 diabetes mellitus</span></li><li><span class="concept" data-cid="1543">gastrointestinal cancer</span></li><li>obesity</li><li>polycystic ovarian syndrome</li><li>acromegaly</li><li>Cushing's disease</li><li>hypothyroidism</li><li>familial</li><li>Prader-Willi syndrome</li><li>drugs: oral contraceptive pill, nicotinic acid</li></ul><br>Pathophysiology<br><ul><li>insulin resistance → hyperinsulinemia → stimulation of keratinocytes and dermal fibroblast proliferation via interaction with insulin-like growth factor receptor-1 (IGFR1)</li></ul><br><div class="container">
<div class="row"><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd011.jpg" data-fancybox="gallery" data-caption="dsd011b.jpg"><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd011.jpg" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx010.jpg" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx010.jpg" alt=""></a></div></div></div></div>
<div id="notecontent">Angiotensin-converting enzyme (ACE) inhibitors are now the established first-line treatment in younger patients with hypertension and are also extensively used to treat heart failure. They are known to be less effective in treating hypertensive Afro-Caribbean patients. ACE inhibitors are also used to treat diabetic nephropathy and have a role in the secondary prevention of ischaemic heart disease.<br><br>Mechanism of action:<br><ul><li>inhibit the conversion angiotensin I to angiotensin II</li><li><span class="concept" data-cid="5284">ACE inhibitors are activated by phase 1 metabolism in the liver </span></li></ul><br>Side-effects:<br><ul><li>cough<ul><li>occurs in around 15% of patients and may occur up to a year after starting treatment</li><li>thought to be due to <span class="concept" data-cid="2034">increased bradykinin levels</span></li></ul></li><li><span class="concept" data-cid="2270">angioedema</span>: may occur up to a year after starting treatment</li><li><span class="concept" data-cid="5266">hyperkalaemia</span></li><li>first-dose hypotension: more common in patients taking diuretics</li></ul><br>Cautions and contraindications<br><ul><li><span class="concept" data-cid="3346">pregnancy</span> and breastfeeding - avoid</li><li><span class="concept" data-cid="10496">renovascular disease</span> - may result in renal impairment</li><li><span class="concept" data-cid="3361">aortic stenosis</span> - may result in hypotension</li><li>hereditary of idiopathic angioedema</li><li><span class="concept" data-cid="10244">specialist advice should be sought before starting ACE inhibitors in patients with a potassium >= 5.0 mmol/L</span></li></ul><br>Interactions<br><ul><li>patients receiving high-dose diuretic therapy (more than 80 mg of furosemide a day)<ul><li>significantly increases the risk of hypotension</li></ul></li></ul><br>Monitoring<br><ul><li><span class="concept" data-cid="3883">urea and electrolytes should be checked before treatment is initiated and after increasing the dose</span><ul><li>a rise in the creatinine and potassium may be expected after starting ACE inhibitors</li><li><span id="concept_popover_id_3884" class="concept concept-0 trigger-link" data-cid="3884" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3884'>You've never been tested on this concept</div><br><div id='div_concept_rating3884' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(239,255,0)'>Importance: <b>53</b></span> </div>" data-original-title="An increase in serum creatinine, up to 30% from baseline is acceptable when initiating ACE inhibitor treatment">acceptable changes are an increase in serum creatinine, up to 30%* from baseline</span> and an <span class="concept" data-cid="10247">increase in potassium up to 5.5 mmol/l</span>*.</li><li>significant renal impairment may occur in patients who have undiagnosed <span class="concept" data-cid="10906">bilateral renal artery stenosis</span></li></ul></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd924b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd924.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd924b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Flow chart showing the management of hypertension as per current NICE guideliness</div><br></div>
`The NICE CKD guidelines suggest that a decrease in eGFR of up to 25% or a rise in creatinine of up to 30% is acceptable. Renal Association UK, Clinical Knowledge Summaries quote 50% which seems rather high. SIGN advise that the fall in eGFR should be less than 20%. `
<div id="notecontent">Failure of oesophageal peristalsis and of relaxation of lower oesophageal sphincter (LOS) due to degenerative loss of ganglia from Auerbach's plexus i.e. LOS contracted, oesophagus above dilated. Achalasia typically presents in middle-age and is equally common in men and women.<br><br>Clinical features<br><ul><li><span id="concept_popover_id_466" class="concept concept-1 trigger-link" data-cid="466" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative466'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating466' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(142,255,0)'>Importance: <b>72</b></span> </div>" data-original-title="Dysphagia affecting both solids and liquids from the start - think achalasia">dysphagia of BOTH liquids and solids</span></li><li>typically variation in severity of symptoms</li><li>heartburn</li><li>regurgitation of food - may lead to cough, aspiration pneumonia etc</li><li>malignant change in small number of patients</li></ul><br>Investigations<br><ul><li><span class="concept" data-cid="467">oesophageal manometry</span>: excessive LOS tone which doesn't relax on swallowing - considered most important diagnostic test</li><li>barium swallow shows grossly expanded oesophagus, fluid level, 'bird's beak' appearance</li><li>CXR: wide mediastinum, fluid level</li></ul><br>Treatment<br><ul><li>intra-sphincteric injection of botulinum toxin</li><li>Heller cardiomyotomy</li><li>pneumatic (balloon) dilation</li><li>drug therapy has a role but is limited by side-effects</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb017b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb017.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb017b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">This film demonstrates the classical 'bird's beak' appearance of the lower oesophagus that is seen in achalasia. An air-fluid level is also seen due to a lack of peristalsis</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb094b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb094.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb094b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Mediastinal widening secondary to achalasia. An air-fluid level can sometimes be seen on CXR but it is not visible on this film</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb093b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb093.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb093b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Barium swallow - grossly dilated filled oesophagus with a tight stricture at the gastroesophageal junction resulting in a 'bird's beak' appearance. Tertiary contractions give rise to a corkscrew appearance of the oesophagus</div></div>
<div id="notecontent">Achilles tendon disorders are the most common cause of posterior heel pain. Possible presentations include tendinopathy (tendinitis), partial tear and complete rupture of the Achilles tendon. <br><br>Risk factors<br><ul><li>quinolone use (e.g. <span class="concept" data-cid="1823">ciprofloxacin</span>) is associated with tendon disorders</li><li>hypercholesterolaemia (predisposes to tendon xanthomata)</li></ul><br><br><b>Achilles tendinopathy (tendinitis)</b><br><br>Features<br><ul><li>gradual onset of posterior heel pain that is worse following activity</li><li>morning pain and stiffness are common</li></ul><br>The management is typically <span id="concept_popover_id_2985" class="concept concept-0 trigger-link" data-cid="2985" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2985'>You've never been tested on this concept</div><br><div id='div_concept_rating2985' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(20,255,0)'>Importance: <b>96</b></span> </div>" data-original-title="Achilles tendonitis management: rest, NSAIDs, and physio if symptoms persist beyond 7 days ">supportive</span><br><ul><li>simple analgesia</li><li>reduction in precipitating activities</li><li><span class="concept" data-cid="989">calf muscle eccentric exercises</span>: this may be self-directed or under the guidance of physiotherapy</li></ul><br><br><b>Achilles tendon rupture</b><br><br>Achilles tendon rupture should be suspected if the person describes the following whilst playing a sport or running; an audible 'pop' in the ankle, sudden onset significant pain in the calf or ankle or the inability to walk or continue the sport. <br><br>An examination should be conducted using <span class="concept" data-cid="10762">Simmond's triad</span>, to help exclude Achilles tendon rupture. This can be performed by asking the patient to lie prone with their feet over the edge of the bed. The examiner should look for an abnormal angle of declination; Achilles tendon rupture may lead to greater dorsiflexion of the injured foot compared to the uninjured limb. They should also feel for a gap in the tendon and gently squeeze the calf muscles if there is an acute rupture of the Achilles tendon the injured foot will stay in the neutral position when the calf is squeezed.<br><br><span class="concept" data-cid="4563">Ultrasound</span> is the initial imaging modality of choice for suspected Achilles tendon rupture<br><br>An acute referral should be made to an orthopaedic specialist following a suspected rupture.</div>
`Achilles tendonitis management: rest, NSAIDs, and physio if symptoms persist beyond 7 days`
!!Acne vulgaris
is a common skin disorder which usually occurs in adolescence. It typically affects the face, neck and upper trunk and is characterised by the obstruction of the pilosebaceous follicles with keratin plugs which results in comedones, inflammation and pustules.
Acne may be classified into mild, moderate or severe:
* mild: open and closed comedones with or without sparse inflammatory lesions
* moderate acne: widespread non-inflammatory lesions and numerous papules and pustules
* severe acne: extensive inflammatory lesions, which may include nodules, pitting, and scarring
A simple step-up management scheme often used in the treatment of acne is as follows:
* single topical therapy (topical retinoids, benzoyl peroxide)
* topical combination therapy (topical antibiotic, benzoyl peroxide, topical retinoid)
* oral antibiotics:
** tetracyclines: lymecycline, oxytetracycline, doxycycline
** tetracyclines should be avoided in pregnant or breastfeeding women and in children younger than 12 years of age
** erythromycin may be used in pregnancy
** minocycline is now considered less appropriate due to the possibility of irreversible pigmentation
** a single oral antibiotic for acne vulgaris should be used for a maximum of three months
** a topical retinoid (if not contraindicated) or benzoyl peroxide should always be co-prescribed with oral antibiotics to reduce the risk of antibiotic resistance developing. Topical and oral antibiotics should not be used in combination
** Gram-negative folliculitis may occur as a complication of long-term antibiotic use - high-dose oral trimethoprim is effective if this occurs
* combined oral contraceptives (COCP) are an alternative to oral antibiotics in women
** as with antibiotics, they should be used in combination with topical agents
** Dianette (co-cyrindiol) is sometimes used as it has anti-androgen properties. However, it has an increased risk of venous thromboembolism compared to other COCPs, therefore it should generally be used second-line, only be given for 3 months and women should be appropriately counselled about the risks
* oral isotretinoin: If scarring, only under specialist supervision
** pregnancy is a contraindication to topical and oral retinoid treatment
There is no role for dietary modification in patients with acne.
---
In ''mild acne'', open and closed comedones (blackheads and whiteheads) predominate but papules and pustules may also be present. Although the physical severity of the condition is limited and scarring is unlikely, the psychosocial impact may be disproportionate in some people, which is an indication for more aggressive treatment.
Prescribe a single topical treatment:
* Prescribe a topical retinoid (tretinoin, isotretinoin, or adapalene) or benzoyl peroxide (especially if papules and pustules are present) as first-line treatment. Note though that retinoids are teratogenic and therefore should be avoided in fertile females .
* Prescribe azelaic acid if both topical retinoids and benzoyl peroxide are poorly tolerated.
* Combined treatment is rarely necessary for mild acne.
* Consider prescribing a standard combined oral contraceptive in women who require contraception, particularly if the acne is having a negative psychosocial impact.
* Arrange follow up after six to eight weeks to review the effectiveness and tolerability of treatment,and the person's compliance with the treatment.
---
Side effects of a topical retinoid include burning, erythema and dry skin. It can also cause eye irritation and oedema
---
In acromegaly there is excess growth hormone secondary to a pituitary adenoma in over 95% of cases. A minority of cases are caused by ectopic GHRH or GH production by tumours e.g. pancreatic.
Features
* coarse facial appearance, spade-like hands, increase in shoe size
* large tongue, prognathism, interdental spaces
* excessive sweating and oily skin: caused by sweat gland hypertrophy
* features of pituitary tumour: hypopituitarism, headaches, bitemporal hemianopia
* raised prolactin in 1/3 of cases → galactorrhoea
* 6% of patients have MEN-1
Complications
* hypertension
* diabetes (>10%)
* cardiomyopathy
* colorectal cancer
In acromegaly there is excess growth hormone secondary to a pituitary adenoma in over 95% of cases. A minority of cases are caused by ectopic GHRH or GH production by tumours e.g. pancreatic.
Features
* coarse facial appearance, spade-like hands, increase in shoe size
* large tongue, prognathism, interdental spaces
* excessive sweating and oily skin: caused by sweat gland hypertrophy
* features of pituitary tumour: hypopituitarism, headaches, bitemporal hemianopia
* raised prolactin in 1/3 of cases → galactorrhoea
* 6% of patients have MEN-1
Complications
* hypertension
* diabetes (>10%)
* cardiomyopathy
* colorectal cancer
Acute coronary syndrome (ACS) is an umbrella term covering a number of acute presentations of ischaemic heart disease.
It covers a number of presentations, including
* ST elevation myocardial infarction (STEMI)
* non-ST elevation myocardial infarction (NSTEMI)
* unstable angina
Before we go into more detail into these presentations it's useful to take a step back and consider how such conditions develop.
ACS generally develops in patients who have ischaemic heart disease, either known or previously undetected. Ischaemic heart disease is a term synonymous with coronary heart disease and coronary artery disease. It describes the gradually build up of fatty plaques within the walls of the coronary arteries. This leads to two main problems:
# Gradual narrowing, resulting in less blood and therefore oxygen reaching the myocardium at times of increased demand. This results in angina, i.e. chest pain due to insufficient oxygen reaching the myocardium during exertion
# The risk of sudden plaque rupture. The fatty plaques which have built up in the endothelium may rupture leading to sudden occlusion of the artery. This can result in no blood/oxygen reaching the area of myocardium.
Remember that there are a large number of factors which can increase the chance of a patient developing ischaemic heart disease:
|!Unmodifiable risk factors|!Modifiable risk factors|
|Increasing age<br>Male gender<br>Family history|Smoking<br>Diabetes mellitus<br>Hypertension<br>Hypercholesterolaemia<br>Obesity|
;FAM CHHOD
:Family h/o-Age-Male - Cigarette - HTN - Hypercholesterolemia - Obesity - Diabetes
!!!Pathophysiology
Ischaemic heart disease is a complex process which develops over a number of years. A number of changes can be seen:
* initial endothelial dysfunction is triggered by a number of factors such as smoking, hypertension and hyperglycaemia
* this results in a number of changes to the endothelium including pro-inflammatory, pro-oxidant, proliferative and reduced nitric oxide bioavailability
* fatty infiltration of the subendothelial space by low-density lipoprotein (LDL) particles
* monocytes migrate from the blood and differentiate into macrophages. These macrophages then phagocytose oxidized LDL, slowly turning into large 'foam cells'. As these macrophages die the result can further propagate the inflammatory process.
* smooth muscle proliferation and migration from the tunica media into the intima results in formation of a fibrous capsule covering the fatty plaque.
<center>
<img width=600 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb029b.png">
</center>
<dd>Diagram showing the progression of atherosclerosis in the coronary arteries with associated complications on the right.</dd>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb028b.jpg">
</center>
<dd>Slide showing a markedly narrowed coronary artery secondary to atherosclerosis. Stained with Masson's trichrome.</dd>
!!!Complications of atherosclerosis
Once a plaque has formed a number of complications can develop:
* the plaque forms a physical blockage in the lumen of the coronary artery. This may cause reduced blood flow and hence oxygen to the myocardium, particularly at times of increased demand, resulting clinically in angina
* the plaque may rupture, potentially causing a complete occlusion of the coronary artery. This may result in a myocardial infarction
<center>
<img width=500 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb079b.jpg">
</center>
<dd>Ruptured coronary artery plaque resulting in thrombosis and associated myocardial infarction.</dd>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb086b.jpg">
</center>
<dd>Pathological specimen showing infarction of the anteroseptal and lateral wall of the left ventricle. There is a background of biventricular myocardial hypertrophy.</dd>
!!!Symptoms and signs
!!!!The classic and most common feature of ACS is chest pain.
* typically central/left-sided
* may radiate to the jaw or the left arm
* often described as 'heavy' or constricting, 'like an elephant on my chest'
* it should be noted however in real clinical practice patients present with a wide variety of types of chest pain and patients/doctors may confuse ischaemic pain for other causes such as dyspepsia
* certain patients e.g. diabetics/elderly may not experience any chest pain
!!!!Other symptoms in ACS include
* dyspnoea
* sweating
* nausea and vomiting
!!!!Patients presenting with ACS often have very few physical signs to ellicit:
* pulse, blood pressure, temperature and oxygen saturations are often normal or only mildly altered e.g. tachycardia
* if complications of the ACS have developed e.g. cardiac failure then clearly there may a number of findings
* the patient may appear pale and clammy
!!!Investigations
The two most important investigations when assessing a patient with chest pain are:
* ECG
* cardiac markers e.g. troponin
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img016.jpg">
</center>
<dd>ECG showing a ST elevation myocardial infarction (STEMI). Note by how looking at which leads are affected (in this case II, III and aVF) we are able to tell which coronary arteries are blocked (the right coronary artery in this case). A blockage of the left anterior descending (LAD) artery would cause elevation of V1-V4, what is often termed an 'anterior' myocardial infarction.</dd>
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg049b.jpg">
</center>
<dd>ECG showing a non-ST elevation myocardial infarction (NSTEMI). On the ECG there is deep ST depression in I-III, aVF, and V3-V6. aVR also has ST elevation. Deep and widespread ST depression is associated with very high mortality because it signifies severe ischemia usually of LAD or left main stem.</dd>
The table below shows a simplified correlation between ECG changes and coronary territories:
|!|!ECG changes|!Coronary artery|
|''Anterior''|V1-V4|Left anterior descending|
|''Inferior''|II, III, aVF|Right coronary|
|''Lateral''|I, V5-6|Left circumflex|
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd519b.png"></center>
<dd>Diagram showing the correlation between ECG changes and coronary territories in acute coronary syndrome</dd>
!!!Management
!!!!Once a diagnosis of ACS has been made there are a number of elements to treatment:
* prevent worsening of presentation (i.e. further occlusion of coronary vessel)
* revascularise (i.e. 'unblock') the vessel if occluded (patients presenting with a STEMI)
* treat pain
!!!!A commonly taught mnemonic for the treatment of ACS is MONA:
* Morphine
* Oxygen
* Nitrates
* Aspirin
Whilst useful it should be remember that not all patients require oxygen therapy. British Thoracic Society guidelines are now widely adopted and oxygen should only be given if the oxygen saturations are < 94%.
!!!!For patients who've had a ''STEMI'' (i.e. one of the coronary arteries has become occluded) the priority of management is to reopen, or revascularise, the blocked vessel.
* a second antiplatelet drug should be given in addition to aspirin. Options include clopidogrel, prasugrel and ticagrelor
* for many years the treatment of choice was thrombolysis. This involved the intravenous administration of a thrombolytic or 'clot-busting' drug to breakdown the thrombus blocking the coronary artery
* since the early 2000's thrombolysis has been superseded by percutaneous coronary intervention (PCI). In this procedure the blocked arteries are opened up using a balloon (angioplasty) following which a stent may be deployed to prevent the artery occluding again in the future. This is done via a catheter inserted into either the radial or femoral artery
!!!!If a patient presents with an ''NSTEMI'' then a risk stratification too (such as GRACE) is used to decide upon further management.
* If a patient is considered high-risk or is clinically unstable then coronary angiography will be performed during the admission.
* Lower risk patients may have a coronary angiogram at a later date.
!!!! Anticoagulation
*with Fondaparinux or LMWH(eg., Dalteparin)
[[Secondary prevention|Myocardial infarction: secondary prevention]]
Patients who've had an ACS require lifelong drug therapy to help reduce the risk of a further event. Standard therapy comprises the following as a minimum:
* aspirin
* a second antiplatelet if appropriate (e.g. clopidogrel)
* a beta-blocker
* an ACE inhibitor
* a statin
:DUAL STAB
!!!Further images
The following images show the progress of coronary artery atherosclerosis:
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb080b.jpg">
</center>
<dd>Normal coronary artery with blood in the lumen.</dd>
<center><img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb081b.jpg">
</center>
<dd>Slightly stenosed coronary artery</dd>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb082b.jpg">
</center>
<dd>Moderately stenosed coronary artery, beetween 50-75%</dd>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb083b.jpg">
</center>
<dd>Severely stenosed coronary artery</dd>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb084b.jpg">
</center>
<dd>Recanalised old atherothrombotic occlusion of a coronary artery. Numerous small neolumina recanalising the organised occluding thrombus (indicated with arrows)</dd>
<div id="body_content">
Acute asthma is nearly always seen in patients who've got a history of asthma.<br><br>Features<br><ul><li>worsening dyspnoea, wheeze and cough that is not responding to salbutamol</li><li>maybe triggered by a respiratory tract infection</li></ul><br>Patients with acute severe asthma are stratified into moderate, severe or life-threatening<br><br>
</div>
|!|!Moderate|!Severe|!Life-threatening|
|!PEFR|50-75%|33 - 50%|< 33% of best/predicted|
|!Speech|Normal|Can't complete sentences|Exhaustion, confusion or coma|
|!RR|< 25 |> 25 |O,,2,, Sats < 92%<br>Silent chest, cyanosis or feeble respiratory effort|
|!HR|< 110|> 110|Bradycardia, dysrhythmia or hypotension|
<br>In addition, a <span class="concept" data-cid="9651">normal pCO<sub>2</sub> in an acute asthma attack indicates exhaustion</span> and should, therefore, be classified as life-threatening.
<div id="notecontent">The British Thoracic Society (BTS) classify patients with acute asthma into moderate, severe or life-threatening categories.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Moderate</b></th><th><span class="concept" data-cid="5448"><b>Severe</b></span></th><th><b>Life-threatening</b></th></tr></thead><tbody><tr><td> <span id="concept_popover_id_6413" class="concept concept-3-u trigger-link" data-cid="6413" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6413'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating6413' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(183,255,0)'>Importance: <b>64</b></span> </div>" data-original-title="Moderate asthma PEFR 50-75% best or predicted">PEFR 50-75% best or predicted</span><br> <span id="concept_popover_id_6414" class="concept concept-3-u trigger-link" data-cid="6414" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6414'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating6414' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(158,255,0)'>Importance: <b>69</b></span> </div>" data-original-title="Moderate asthma speech normal">Speech normal</span><br> <span class="concept" data-cid="6415">RR < 25 / min</span><br> <span class="concept" data-cid="6416">Pulse < 110 bpm</span></td><td><span class="concept" data-cid="6417">PEFR 33 - 50% best or predicted</span><br> <span id="concept_popover_id_4144" class="concept concept-3-u trigger-link" data-cid="4144" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4144'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating4144' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(183,255,0)'>Importance: <b>64</b></span> </div>" data-original-title="If a patient cannot complete sentences, they have severe asthma">Can't complete sentences</span><br> <span class="concept" data-cid="6419">RR > 25/min</span><br> <span class="concept" data-cid="6420">Pulse > 110 bpm</span></td><td><span class="concept" data-cid="6421">PEFR < 33% best or predicted</span><br> <span class="concept" data-cid="6422">Oxygen sats < 92%</span><br><span class="concept" data-cid="1463">'Normal' pC0<sub>2</sub> (4.6-6.0 kPa)</span><br> <span id="concept_popover_id_6423" class="concept concept-3-u trigger-link" data-cid="6423" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6423'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating6423' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(30,255,0)'>Importance: <b>94</b></span> </div>" data-original-title="Life-threatening asthma silent chest, cyanosis or feeble respiratory effort">Silent chest, cyanosis or feeble respiratory effort</span><br> <span class="concept" data-cid="6424">Bradycardia, dysrhythmia or hypotension</span><br> <span id="concept_popover_id_6425" class="concept concept-3-u trigger-link" data-cid="6425" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6425'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating6425' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="Life-threatening asthma exhaustion, confusion or coma">Exhaustion</span>, <span class="concept" data-cid="1485">confusion</span> or coma</td></tr></tbody></table></div><br>Note that a patient having any one of the life-threatening features should be treated as having a life-threatening attack.<br><br>A fourth category, '<b>Near-fatal asthma</b>', is also recognised characterised by a <span class="concept" data-cid="4472">raised pC0<sub>2</sub></span> and/or requiring mechanical ventilation with raised inflation pressures.<br><br>Further assessment<br><ul><li>the BTS guidelines recommend <span class="concept" data-cid="10910">arterial blood gases for patients with oxygen sats < 92%</span></li><li>a chest x-ray is not routinely recommended, unless:<ul><li>life-threatening asthma</li><li>suspected pneumothorax</li><li>failure to respond to treatment</li></ul></li></ul><br>Management<br><ul><li>admission<ul><li>all patients with life-threatening should be admitted in hospital</li><li>patients with features of severe acute asthma should also be admitted if they fail to respond to initial treatment.</li><li>other admission criteria include a <span class="concept" data-cid="1501">previous near-fatal asthma attack</span>, <span class="concept" data-cid="10907">pregnancy</span>, an attack occurring despite already using oral corticosteroid and presentation at night</li></ul></li><li>oxygen<ul><li>if patients are hypoxaemic, it is important to start them on supplemental oxygen therapy</li><li>if patients are acutely unwell they should be started on 15L of supplemental via a non-rebreathe mask, which can then be titrated down to a flow rate where they are able to maintain a <span class="concept" data-cid="10908">SpO₂ 94-98%</span>.</li></ul></li><li>bronchodilation with short-acting beta₂-agonists (SABA)<ul><li>high-dose inhaled SABA e.g. salbutamol, terbutaline</li><li>in patients without features of life-threatening or near-fatal asthma, this can be given by a standard pressurised metered-dose inhaler (pMDI) or by an oxygen-driven nebulizer</li><li>in patients with features of a life-threatening exacerbation of asthma, <span class="concept" data-cid="1605">nebulised SABA</span> is recommended</li></ul></li><li>corticosteroid<ul><li>all patients should be given 40-50mg of prednisolone orally (PO) daily, which should be continued for at least five days or until the patient recovers from the attack</li><li>during this time, patients should continue their normal medication routine including inhaled corticosteroids.</li></ul></li><li><span class="concept" data-cid="10909">ipratropium bromide: in patients with severe or life-threatening asthma</span>, or in patients who have not responded to beta₂-agonist and corticosteroid treatment, nebulised ipratropium bromide, a short-acting muscarinic antagonist</li><li>IV magnesium sulphate<ul><li>the BTS notes that the evidence base is mixed for this treatment that is now commonly given for severe/life-threatening asthma</li></ul></li><li>IV aminophylline may be considered following consultation with senior medical staff</li><li>patients who fail to respond require <span class="concept" data-cid="5561">senior critical care support</span> and should be treated in an appropriate ITU/HDU setting. Treatment options include:<ul><li>intubation and ventilation</li><li>extracorporeal membrane oxygenation (ECMO)</li></ul></li></ul><br>Criteria for discharge<br><ul><li>been <span class="concept" data-cid="10912">stable on their discharge medication (i.e. no nebulisers or oxygen) for 12–24 hours</span></li><li>inhaler technique checked and recorded</li><li><span class="concept" data-cid="10911">PEF >75% of best or predicted</span></li></ul></div>
---
!!!<center>''ASTHMA EXACERBATION PROTOCOL''</center>
<hr>
* ABG on admission (unless already done)
* CXR STAT
* Propped up position
* Oxygen to keep O2 sats 90-92%
* Inj NS @ 75 ml/hr if required and patient is NPO
* Inj Augmentin 1.2 mg IV q12h
* Inj Pip-Taz 4.5 IV q8h if patient is in shock or sepsis.
* Nebs Asthalin 2.5-5 mg by jet every 20 minutes for three doses, then 2.5-5 mg every one to four hours as needed OR
* Neb Asthalin cont 3 ml over 1 hr
* Ipratropium bromide: give 500 mcg by nebulization every 20 minutes for 3 doses
* Inj Methylprednisolone 2mg/kg(max:125mg) IV q6h
* Tab Wysolone 2mg/kg (max: 60 mg) OD
* May try BIPAP
* Inj Magnesium sulfate: give 2-4 g IV over 20 minutes for life-threatening exacerbations and exacerbations that remain severe after one hour of intensive bronchodilator therapy
* Inj Adrenaline 0.01mg/kg SC STAT
* Slowing of the respiratory rate, depressed mental status, inability to maintain respiratory effort, or severe hypoxemia suggests the patient requires intubation.
* Use low tidal volumes (6 to 8 mL/kg), and low respiratory rates (10 to 12/minute).
* History of gallstones symptoms
* Continuous RUQ pain
* Fever, raised inflammatory markers and white cells
* Murphy's sign positive (arrest of inspiration on palpation of the RUQ)
!!!Tests
* `Ultrasound scanning` is the investigation of choice in patients with suspected acute cholecystitis. Typical findings include pericholecystic fluid, distended gall bladder, oedematous gallbladder wall, and gall stones.
* Biliary scintigraphy (which is the same as hydroxyiminodiacetic acid (`HIDA`) scan) is the gold standard investigation when the diagnosis remains in doubt after ultrasound scanning. Biliary scintigraphy is done by giving the patient in intravenous injection of radio labelled hydroxyiminodiacetic acid and then scanning the abdomen one or two hours later. In patients with acute cholecystitis, the gallbladder lumen will not take up any radioactive isotope within this time and the gall bladder will not be visible on the scan.
!!Acute confusional state
<div id="notecontent">Acute confusional state is also known as delirium or acute organic brain syndrome. It affects up to 30% of elderly patients admitted to hospital.<br><br>Predisposing factors include:<br><ul><li>age > 65 years</li><li>background of dementia</li><li>significant injury e.g. hip fracture</li><li>frailty or multimorbidity</li><li>polypharmacy</li></ul><br>The precipitating events are often multifactorial and may include:<br><ul><li>infection: particularly urinary tract infections</li><li>metabolic: e.g. hypercalcaemia, hypoglycaemia, hyperglycaemia, dehydration</li><li><span id="concept_popover_id_1315" class="concept concept-0 trigger-link" data-cid="1315" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1315'>You've never been tested on this concept</div><br><div id='div_concept_rating1315' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="New surroundings can cause delirium in cognitively impaired patients">change of environment</span></li><li>any significant cardiovascular, respiratory, neurological or endocrine condition</li><li>severe pain</li><li>alcohol withdrawal</li><li><span class="concept" data-cid="1314">constipation</span></li></ul><br>Features - a wide variety of presentations<br><ul><li>memory disturbances (loss of short term > long term)</li><li>may be very agitated or withdrawn</li><li>disorientation</li><li>mood change</li><li>visual hallucinations</li><li>disturbed sleep cycle</li><li>poor attention</li></ul><br>Management<br><ul><li>treatment of the underlying cause</li><li>modification of the environment</li><li>the 2006 Royal College of Physicians publication 'The prevention, diagnosis and management of delirium in older people: concise guidelines' recommended haloperidol 0.5 mg as the first-line sedative</li><li>the 2010 NICE delirium guidelines advocate the use of haloperidol or olanzapine</li></ul></div>
---
!!Cognitive Assessment Tests
;Takes 5min or less
* Abbreviated mental test score (AMTS) is a 10-item scale validated in wards but used in UK primary care.
* 6 item cognitive impairment test (6-CIT) - three orientation items, count backwards from 20, months of the year in reverse, learn an address. It is validated in primary care.
* General practitioner assessment of cognition (GPCOG) - was developed for primary care and includes a carers' interview.
;Other Tests
* MMSE
* ACE III
* CQUIN
* MoCA
Acute epiglottitis is rare but serious infection caused by Haemophilus influenzae type B. Prompt recognition and treatment is essential as airway obstruction may develop. Epiglottitis was generally considered a disease of childhood but in the UK it is now more common in adults due to the immunisation programme. The incidence of epiglottitis has decreased since the introduction of the Hib vaccine.
Features
* rapid onset
* high temperature, generally unwell
* stridor
* drooling of saliva
Investigations
* chest x-ray
** a lateral view in acute epiglottis will show swelling of the epiglottis - the 'thumb sign'
** in contrast, a posterior-anterior view in croup will show subglottic narrowing, commonly called the 'steeple sign'
<center>
<img width=600 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pda802.jpg">
</center>
<div id="notecontent">The vast majority of cases in the UK are caused by <span class="concept" data-cid="4211">gallstones and alcohol</span>.<br><br>Popular mnemonic is <b>GET SMASHED</b><br><ul><li><b>G</b>allstones</li><li><b>E</b>thanol</li><li><b>T</b>rauma</li><li><span class="concept" data-cid="2995"><b>S</b>teroids</span></li><li><span class="concept" data-cid="8371"><b>M</b>umps</span> (other viruses include Coxsackie B)</li><li><b>A</b>utoimmune (e.g. polyarteritis nodosa), <b>A</b>scaris infection</li><li><b>S</b>corpion venom</li><li><b>H</b>ypertriglyceridaemia, <b>H</b>yperchylomicronaemia, <b>H</b>ypercalcaemia, <span class="concept" data-cid="4225"><b>H</b>ypothermia</span></li><li><span class="concept" data-cid="1934"><b>E</b>RCP</span></li><li><b>D</b>rugs (<span class="concept" data-cid="10795">azathioprine</span>, <span class="concept" data-cid="2803">mesalazine</span>*, didanosine, bendroflumethiazide, furosemide, pentamidine, steroids, sodium valproate)</li></ul><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb103b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb103.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb103b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">CT from a patient with acute pancreatitis. Note the diffuse parenchymal enlargement with oedema and indistinct margins.</div><br><br>*pancreatitis is 7 times more common in patients taking mesalazine than sulfasalazine</div>
<div id="body_content">
Pericarditis is one of the differentials of any patient presenting with chest pain.<br><br>Features<br><ul><li>chest pain: may be pleuritic. <span class="concept" data-cid="5267">Is often relieved by sitting forwards</span></li><li>other symptoms include non-productive cough, dyspnoea and flu-like symptoms</li><li><span class="concept" data-cid="4696">pericardial rub</span></li><li>tachypnoea</li><li>tachycardia</li></ul><br>Causes<br><ul><li>viral infections (Coxsackie)</li><li>tuberculosis</li><li><span class="concept" data-cid="3898">uraemia</span> (causes 'fibrinous' pericarditis)</li><li>trauma</li><li>post-myocardial infarction, Dressler's syndrome</li><li>connective tissue disease</li><li>hypothyroidism</li><li><span class="concept" data-cid="2989">malignancy</span></li></ul><br>Investigations<br><ul><li>ECG changes<ul><li>the changes in pericarditis are often <span class="concept" data-cid="9669">global/widespread</span>, as opposed to the 'territories' seen in ischaemic events</li><li><span class="concept" data-cid="1281">'saddle-shaped' ST elevation</span> </li><li><span class="concept" data-cid="2988">PR depression: most specific ECG marker for pericarditis</span></li></ul></li><li><span class="concept" data-cid="9750">all patients with suspected acute pericarditis should have transthoracic echocardiography</span></li></ul><br>Management<br><ul><li>treat the underlying cause</li><li><span class="concept" data-cid="9697">a combination of NSAIDs and colchicine is now generally used for first-line for patients with acute idiopathic or viral pericarditis</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg062b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg062.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg062b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg062c.jpg" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">ECG showing pericarditis. Note the widespread nature of the ST elevation and the PR depression</div></div>
* `Antihistamines should NOT` be used as there is evidence to suggest that they impede the recovery by increasing the viscosity of secretions.
!!!<center>''ABDOMINAL PAIN, ACUTE''</center>
<hr>
* What are the patient’s vital signs?
* If vitals unstable send to ICU immediately.
* First rule out acute surgical abdomen (perforation, peritonitis, appendicitis)
* Perforated viscus: Scaphoid, tense; diminished BS (late); guarding or rigidity
* Peritonitis: Motionless, absent BS (late); cough and rebound tenderness; guarding or rigidity
* Intestinal obstruction: Distension; visible peristalsis (late); hyperperistalsis (early) or quiet abdomen (late); diffuse pain without rebound tenderness, Ass with vomiting, Obstipation (absence of passage of stool or flatus)
* Get X-ray abdomen erect, CT if needed
* Call surgeon for surgical abdomen
* May need to operate immediately
* Any fever? Cholecystitis/appendicitis.
* Where is the pain located?
<hr>
<center>''(RUQ) Abdominal Pain''</center>
<hr>
* Biliary colic: Antispasmodic Inj, Admit SOS
* Acute cholecystitis/cholangitis: Admit
* Acute hepatitis: LFT, viral markers, supportive care, Admit sos
* Liver abscess: Admit, USG guided drainage
<hr>
<center>''Epigastric abdominal pain''</center>
<hr>
* Acute MI: get ECG, Cardio consult
* Acute pancreatitis: Admit, NPO, pain control
* Peptic ulcer disease: PPIs, Antacids, Admit sos, may need UGI endoscopy
* GERD/Gastritis: PPIs, Antacids
<hr>
<center>''(LUQ) abdominal pain''</center>
<hr>
* Splenomegaly/infarct,abscess: Admit for eval
<hr>
<center>''Lower abdominal pain''</center>
<hr>
* Appendicitis: Surgical consult, admit
* Diverticulitis/Colitis: Admit sos
* Nephrolithiasis: Pain control
* Pyelonephritis: Admit
* Acute urinary retention: refer to topic
* Cystitis: Abx
<hr>
<center>''Pelvic causes of abdominal pain in women''</center>
<hr>
* Ectopic pregnancy: Immediate Surgical/OB-GYN consult.
* Pelvic inflammatory disease: Abx, Admit SOS
* Ovarian torsion: Admit
* Ruptured ovarian cyst: Admit
* Endometriosis/Endometritis: Admit
* Leiomyomas (fibroid): Admit sos
<hr>
<center>''Diffuse abdominal pain''</center>
<hr>
* Bowel obstruction: Surgical consult, admission
* Perforation of GIT: Immediate surgical consult
* Acute mesenteric ischemia: CT angio, surgical consult
* Inflammatory bowel disease (ulcerative colitis/Crohn's disease): Admit, GI consult
* Viral gastroenteritis: Admit sos
* Spontaneous bacterial peritonitis: Admit, ascites tap, Ascites protocol
* Ketoacidosis: Admit
* Does the pain radiate?
* Rapidly generalized pain: perforation/peritonitis
* Biliary pain/Pancreatic/Ureteral colic radiate
* What is the quality of the pain?
* Coliky: Intestinal colic/Ureteric colic
* Biliary colic: not a true colicky pain
* Intestinal or ureteral colic pt:restless and active
* Any Hematemesis? Gastritis/PUD
* Any hematuria? Nephrolithiasis.
* Cough with sputum: LL pneumonia, get CXR
* For women, menstrual history?
* Missed period: ectopic pregnancy?
* Foul vaginal discharge: PID?
* H/O PUD, gallstones, diverticulosis, alcohol abuse, abdominal operations suggesting adhesions?
* Any cardiac disease or arrhythmias?
* Is the Pt on steroids or NSAIDs?
* All admitted patients: keep NPO, NG tube sos
* Can this be DKA or MI?
* For admission start Abdominal pain orderset
<hr>
<center>''Pain Medications''</center>
<hr>
* Inj Superspas (Diclo+Pitofenone) 1 amp IM STAT
* Inj Drotin 1 amp IM STAT
* Inj Buscopan (Hyoscyamine) 1 amp IM/IV STAT
* Inj Morphine 2 mg IV STAT
* Inj Tramadol 1 amp IM STAT
* Dicyclomine+PCM: Tab Cyclopam/Colimex TDS
* Drotaverine: Tab Drotin 40 BD, 3 days
* Drotaverine + PCM: Tab Drotin Plus BD, 3 days
* Hyoscyamine: Tab Buscopan 10 mg TDS, 3 days
* Mefenamic acid+Dicyclomine: Tab Meftal spas BD
* No NSAIDs for Gastritis, PUD, GERD
* X-ray abdomen erect
* CBC, Serum HCG in females, KFT, LFT, Urine RE, Amylase, Lipase, USG abd
* Blood and urine cultures.
* CECT abdomen
* Nil orally
* Bed rest
* RT if needed
* Inj NS bolus if low BP, then at 75-100 ml/hr
* Repeat Bolus if needed
* IVF:
* Inj Emset 4 mg IV SOS nausea/vomiting
* Inj Buscopan/Anafortan 1 amp IM STAT then sos pain
* Tab PCM 650 mg PO Q 4 hr sos pain/fever.
* Inj Morphine 2 mg IV every 4 hrs as needed for pain.
* Inj Omez 40 mg IV OD
* Inj Ceftriaxone 1gm IV q12h + Metro 500mg IV q8h
* Inj Cipro 400 mg IV q12h + Metro 500mg IV q8h
* Inj Augmentin 1.2 IV q12h
* Inj Gentamicin 80 mg IV q12h
* Inj Amika 500 IV q12h
* Inj Pip-Taz 4.5 gm IV q8h
* Inj Cefoperazone sulb 1.5 IV q12h
* Surgical Consult
!!!<center>''ACUTELY AGITATED OR VIOLENT ADULT''</center>
<hr>
* MCC: drug and alcohol intoxication/withdrawal.
* Get RBS, Vitals and pulse oximetry
* Common and dangerous causes:
* Toxicologic (Alcohol intoxication or withdrawal, cocaine and other drugs)
* Metabolic: (Hypoglycemia, Hypoxia)
* Neurologic: (Stroke, Intracranial lesion (eg, hemorrhage, tumors), CNS infection, Seizure, Dementia)
* Other medical conditions: Hyperthyroidism, Shock, AIDS, Hypothermia; Hyperthermia
* Psychiatric: Psychosis, Schizophrenia, Paranoid delusions, Personality disorder
* Antisocial behavior
* Rapid tranquilization may be required in the agitated or violent patient.
* Inj Midazolam 2.5-5 mg IV/IM OR
* Inj Lorazepam 2 mg IM/IV PLUS
* Inj Haloperidol 5 mg IV/IM
* Tab Oleanz 5-10 mg OD
| !ACUTE ALCOHOL WITHDRAWAL DRUGS |<|
|Stop alcohol<br>Stop high protein diet|<|
|For withdrawal symptoms|Inj Neurobion 2 cc IM daily X 7 days<br>Cap Becosules BD<br>Tab Wysolone 10 mg BD 10 days<br>Tab Diazepam 5 mg TDS till tremors are controlled.|
| !ACUTE CONSTIPATION DRUGS |<|
|Enema<br>PC enema STAT|<|
|Bisacodyl|Tab Dulcolax 5 mg 1-2 tab STAT; Administer with a glass of water on an empty stomach for rapid effect.<br>Rectal supp Dulcolax 10 mg 1-2 STAT|
|Mg(OH),,2,,|Syr Cremaffin 30 ml STAT at bedtime|
|Polyethylene glycol|Laxopeg sachet, dissolve in 1 glass of water daily|
|Sodium picosulphate|Tab Cremalax 10 mg at bedtime<br>Syr Cremalax 5 mg/5 ml 10 ml STAT|
!!!<center>''ACUTE DIARRHEA''</center>
<hr>
//A 50-year-old woman is admitted after having 36 hours of diarrhea.//
* Immediate Questions
* What are the patient’s vital signs?
* Hypotension suggests volume depletion or possible septic shock; Admit
* Diarrhea with hypotension or fever: Admit
* Is the diarrhea grossly bloody? (ischemic bowel or infarction, invasive infections, neoplasms, or inflammatory bowel disease (IBD).
* Bloody diarrhea: Admit
* Acute diarrhea: usually self limiting. Treat symptomatically.
* Rx: Hydration and alteration of diet.
* ORS, plenty of water, diluted fruit juices, coconut water, broths or soups with salt, buttermilk, biscuits, overripe bananas,
* Avoid fatty food
* No antibiotic therapy in most cases.
* ANTIBIOTICS IF fever, >6 stools/day, dehydrated needing admission, Bloody or mucoid stools, age >70 years old and comorbidities such as cardiac disease and immunocompromising conditions
* Tab Ciplox/Oflox BD for 3-5 days
* If Bloody or mucoid stools give Metrogyl 400 TDS or give a combination with above like CIplox TZ or Norflox TZ
* Loperamide only if fever is absent or low grade and the stools are not bloody.
| !ACUTE DIARRHEA DRUGS |<|
|Loperamide|Tab Lopamide 2 tab STAT, then 1 tab after each loose stool up to 5 tab/d|
|Diphenoxylate|Tab Lomotil/Lomofen 2 tab every 6 hrs untill diarrhea is controlled.|
|Probiotic|Cap Nutrolin-B 1 cap daily, 5 days<br>Tab Sporolac DS 1 tab daily, 7 days<br>Sach Econorm 1 sach OD, 5 days|
|Antibiotics|Tab Ciplox TZ BD 5 days<br>Tab Norflox TZ BD 5 days<br>Tab Oflox OZ BD 5 days|
|Racecadrotil|Cap Redotil/Zedott 100 mg TDS, 1 wk|
|Diphenoxylate+<br>Atropine|Tab Lomotil TDS for 1 day then SOS diarrhea|
| !ACUTE DIARRHEA WITH NAUSEA & VOMITING |<|
|Metoclopramide|Inj Perinorm 1 amp IM STAT|
|Ondansetron|Inj Vomikind 1 amp IM STAT|
| !ACUTE DIARRHEA WITH PAIN |<|
|Camylophin|Tab Anafortan TDS, 5 days<br>Inj Anafortan 1 amp STAT then SOS abd pain|
!!!<center>''ACUTE GASTROENTERITIS''</center>
<hr>
* No Abx, ORS
!!!<center>''ACUTE PYELONEPHRITIS''</center>
<hr>
* Ceftriaxone 1 g IV Q24H OR Levoflox 500 IV q24h 2wks OR Amikacin 1g IV/IM OD OR Genta 7 mg/kg/d OR Pip-Taz 4.5 q8h OR Cefoperazone-sulb 3 gm IV q12h
!!!<center>''ACUTE URETHRAL SYNDROME''</center>
<hr>
* Doxy 100 BD x 10 ds
!!!<center>''URINARY RETENTION, ACUTE''</center>
<hr>
* MCC is BPH
* Other causes: Constipation, Prostate cancer, Urethral stricture, Postoperative, Neurologic disorder, Medications/drugs, Urinary tract infection, Urolithiasis
* Get a bladder scan in ICU. ICU sister can help, ask for volume also.
* Send for urinalysis and urine culture, check creatinine, CBC to rule out infection
* If there is significant volume then insert Foley
* First try 14 to 18 gauge, if not then try 10-12
* If not able to pass we have a guide wire and serial dilators in ICU. Talk with MO and ICU sisters
* If obstruction then do suprapubic catheter
* Completely drain the bladder
* Hematuria, transient hypotension may happen. Don't worry
* Admit if uroseptic or who have obstruction related to malignancy or spinal cord compression.
* Can keep the catheter for 1-2 wks
* Order USG KUB with prostate with PVR
* In men with presumed BPH, start alfuzosin 10 mg daily.
* And refer the patient to Urologist
NICE published guidelines in 2012 on the management of acute upper gastrointestinal bleeding which is most commonly due to either peptic ulcer disease or oesophageal varices. Some of the key points are detailed below.
!!!Risk assessment
* use the `Blatchford score` at first assessment, and
* the full `Rockall score` after endoscopy
<br><b>Blatchford score</b>
<br><br>
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Admission risk marker</b></th><th><b>Score</b></th></tr></thead><tbody><tr><td>Urea (mmol/l)</td><td>6·5 - 8 = 2<br>8 - 10 = 3<br>10 - 25 = 4<br>> 25 = 6</td></tr><tr><td>Haemoglobin (g/l)</td><td>Men<br><ul><li>12 - 13 = 1</li><li>10 - 12 = 3</li><li>< 10 = 6</li></ul><br>Women<br><ul><li>10 - 12 = 1</li><li>< 10 = 6</li></ul></td></tr><tr><td>Systolic blood pressure (mmHg)</td><td>100 - 109 = 1<br>90 - 99 = 2<br>< 90 = 3</td></tr><tr><td>Other markers</td><td>Pulse >=100/min = 1<br>Presentation with melaena = 1<br>Presentation with syncope = 2<br>Hepatic disease = 2<br>Cardiac failure = 2</td></tr></tbody></table></div><br><span class="concept" data-cid="3472">Patients with a Blatchford score of 0 may be considered for early discharge.</span><br><br><b>Resuscitation</b><br><ul><li>ABC, wide-bore intravenous access * 2</li><li>platelet transfusion if actively bleeding platelet count of less than 50 x 10*9/litre</li><li>fresh frozen plasma to patients who have either a fibrinogen level of less than 1 g/litre, or a prothrombin time (international normalised ratio) or activated partial thromboplastin time greater than 1.5 times normal</li><li>prothrombin complex concentrate to patients who are taking warfarin and actively bleeding</li></ul><br><b>Endoscopy</b><br><ul><li>should be offered immediately after resuscitation in patients with a severe bleed</li><li><span class="concept" data-cid="4226">all patients should have endoscopy within 24 hours</span></li></ul><br><b>Management of non-variceal bleeding</b><br><ul><li><span class="concept" data-cid="4227">NICE do not recommend the use of proton pump inhibitors (PPIs) before endoscopy</span> to patients with suspected non-variceal upper gastrointestinal bleeding although PPIs should be given to patients with non-variceal upper gastrointestinal bleeding and stigmata of recent haemorrhage shown at endoscopy</li><li>if further bleeding then options include repeat endoscopy, interventional radiology and surgery</li></ul><br><b>Management of variceal bleeding</b><br><ul><li>terlipressin and prophylactic antibiotics should be given to patients at presentation (i.e. before endoscopy)</li><li>band ligation should be used for oesophageal varices and injections of N-butyl-2-cyanoacrylate for patients with gastric varices</li><li>transjugular intrahepatic portosystemic shunts (TIPS) should be offered if bleeding from varices is not controlled with the above measures</li></ul>
Autoimmune destruction of the adrenal glands is the commonest cause of primary hypoadrenalism in the UK, accounting for 80% of cases. This is termed Addison's disease and results in reduced cortisol and aldosterone being produced.
Features
* lethargy, weakness, anorexia, nausea & vomiting, weight loss, 'salt-craving'
* hyperpigmentation (especially palmar creases)*, vitiligo, loss of pubic hair in women, hypotension, hypoglycaemia
* `hyponatraemia and hyperkalaemia` may be seen
* crisis: collapse, shock, pyrexia
Other causes of hypoadrenalism
Primary causes
* tuberculosis
* metastases (e.g. bronchial carcinoma)
* meningococcal septicaemia (Waterhouse-Friderichsen syndrome)
* HIV
* antiphospholipid syndrome
Secondary causes
* pituitary disorders (e.g. tumours, irradiation, infiltration)
Exogenous glucocorticoid therapy
*Primary Addison's is associated with hyperpigmentation whereas secondary adrenal insufficiency is not
---
{{AddiSonIx}}
---
{{AddiSonMx}}
!!Addison's Disease: Investigations
* In a patient with suspected Addison's disease the definite investigation is an `ACTH stimulation test (short Synacthen test)`.
* Plasma cortisol is measured before and 30 minutes after giving Synacthen 250ug IM.
* Adrenal autoantibodies such as anti-21-hydroxylase may also be demonstrated.
If an ACTH stimulation test is not readily available (e.g. in primary care) then sending a 9 am serum cortisol can be useful:
* > 500 nmol/l makes Addison's very unlikely
* < 100 nmol/l is definitely abnormal
* 100-500 nmol/l should prompt a ACTH stimulation test to be performed
Associated electrolyte abnormalities are seen in around one-third of undiagnosed patients:
* hyperkalaemia
* hyponatraemia
* hypoglycaemia
* metabolic acidosis
!! Addison's Disease: Management
<div id="notecontent">Patients who have Addison's disease are usually given both glucocorticoid and mineralocorticoid replacement therapy.<br><br>This usually means that patients take a combination of:<br><ul><li>hydrocortisone: usually given in 2 or 3 divided doses. Patients typically require 20-30 mg per day, with the majority given in the morning dose</li><li>fludrocortisone</li></ul><br>Patient education is important:<br><ul><li>emphasise the importance of not missing glucocorticoid doses</li><li>consider MedicAlert bracelets and steroid cards</li><li>discuss how to adjust the glucocorticoid dose during an intercurrent illness (see below)</li></ul><br>Management of intercurrent illness<br><ul><li>in simple terms the glucocorticoid dose should be doubled</li><li>the Addison's Clinical Advisory Panel have produced guidelines detailing particular scenarios - please see the CKS link for more details</li></ul></div>
---
>MINERAL WATER for ADDISON
*FLUDROcortisone+HYDROcortisone
---
!!Adenosine
is most commonly used to terminate supraventricular tachycardias. The effects of adenosine are enhanced by dipyridamole (antiplatelet agent) and blocked by theophyllines. It should be avoided in asthmatics due to possible bronchospasm.
Mechanism of action
*causes transient heart block in the AV node
*agonist of the A1 receptor in the atrioventricular node, which inhibits adenylyl cyclase thus reducing cAMP and causing hyperpolarization by increasing outward potassium flux
*adenosine has a very short half-life of about 8-10 seconds
Adenosine should ideally be infused via a large-calibre cannula due to it's short half-life,
Adverse effects
*chest pain
*bronchospasm
*transient flushing
*can enhance conduction down accessory pathways, resulting in increased ventricular rate (e.g. WPW syndrome)
<hr>
<center>''Adult Dosage''</center><hr>6 mg IV push over 1-2 sec, if unsuccessful may repeat after 1-2 min with 12 mg IV to a max of 30 mg.
<hr>
<center>''Pediatric Dosage''</center><hr>
* ''Rapid I.V.: Initial dose:'' 0.05-0.1 mg/kg; if not effective within 1-2 minutes, increase dose by 0.05-0.1 mg/kg increments every 1-2 minutes to a maximum single dose of 0.3 mg/kg or until termination of PSVT
* ''For rapid bolus I.V. use'', administer over 1-2 seconds at peripheral I.V. site closest to patient's heart; follow each bolus with NS flush (infants and children: 5-10 mL; adults: 20 mL); ''Note:'' The use of two syringes (one with adenosine dose and the other with NS flush) connected to a T-connector or stopcock is recommended for I.V. and I.O. administration (PALS, 2010). If given I.V. peripherally in adults, elevate the extremity for 10-20 seconds after the NS flush.
<div id="notecontent">Adhesive capsulitis (frozen shoulder) is a common cause of shoulder pain. It is most common in middle-aged females. The aetiology of frozen shoulder is not fully understood.<br><br>Associations<br><ul><li><span id="concept_popover_id_2422" class="concept concept-0 trigger-link" data-cid="2422" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2422'>You've never been tested on this concept</div><br><div id='div_concept_rating2422' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(15,255,0)'>Importance: <b>97</b></span> </div>" data-original-title="Diabetes mellitus is a risk factor for developing adhesive capsulitis">diabetes mellitus</span>: up to 20% of diabetics may have an episode of frozen shoulder</li></ul><br>Features typically develop over days<br><ul><li><span id="concept_popover_id_2423" class="concept concept-1 trigger-link" data-cid="2423" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2423'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating2423' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(254,255,0)'>Importance: <b>50</b></span> </div>" data-original-title="External rotation is classically impaired in adhesive capsulitis">external rotation is affected more than internal rotation or abduction</span></li><li>both active and passive movement are affected</li><li>patients typically have a painful freezing phase, an adhesive phase and a recovery phase</li><li>bilateral in up to 20% of patients</li><li>the episode typically lasts between 6 months and 2 years</li></ul><br>The <span class="concept" data-cid="1230">diagnosis is usually clinical</span> although imaging may be required for atypical or persistent symptoms.<br><br>Management<br><ul><li>no single intervention has been shown to improve outcome in the long-term</li><li>treatment options include NSAIDs, physiotherapy, oral corticosteroids and intra-articular corticosteroids</li></ul></div>
* ------------------------------ icon fonts ------------------------------ */
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css">
* ------------------------------ UptoDate Table ------------------------------ */
.figure {
font-size: 100%;
text-align: left;
/* font-family: Verdana, Geneva, sans-serif; */
background-color: White;
margin: 1em;
padding: 0em;
-webkit-text-size-adjust: 100%;
}
.figure .ttl {
overflow-wrap: break-word;
word-break: normal;
line-height: 1.4em;
text-align: center;
font-size: 1em;
font-weight: bold;
text-transform: uppercase;
padding: 0em .2em .4em .2em;
}
.figure .cntnt {
border-top: 3px solid MediumPurple;
border-bottom: 2px solid MediumPurple;
text-align: left;
margin: 0em;
padding: 0em .625em;
}
.figure table {
text-align: left;
font-size: .9em;
margin: 0 auto;
padding: 0em;
}
.figure table tr:first-child{
border-top:none;
}
.figure table tr:last-child{
border-bottom:none;
}
.figure table ul {
margin-block-start: 0;
margin-block-end: 0;
}
td.subtitle1 {
vertical-align: middle;
text-align: center;
font-size: 1.2em;
font-weight: bold;
padding-top: .5em;
padding-bottom: .3em;
border-bottom: 3px solid Black;
background-color: #EEEEEE;
}
td.subtitle2_left {
font-size: 1em;
font-weight: bold;
padding-top: .4em;
padding-bottom: .3em;
border-bottom: 1px solid #555555;
}
td.subtitle1_single {
vertical-align: middle;
font-size: 1.2em;
font-weight: bold;
padding-top: .4em;
padding-bottom: .3em;
padding-left: .42em;
border-bottom: 1px solid #000000;
background-color: #EEEEEE;
}
td.indent1 {
padding-left: 2em;
}
td.indent2 {
padding-left: 3.5em;
}
td.indent3 {
padding-left: 5em;
}
.figure .graphic_footnotes {
word-wrap: break-word;
line-height: 1.5em;
font-family: Verdana, Geneva, sans-serif;
font-size: .75em;
text-align: left;
padding-top: .4em;
padding-bottom: .4em;
}
.figure .graphic_reference {
word-wrap: break-word;
line-height: 1.5em;
font-family: Verdana, Geneva, sans-serif;
font-size: .75em;
font-style: italic;
text-align: left;
padding-top: .4em;
border-top: 1px solid #CCCCCC;
}
.figure #graphicVersion {
font-size: .75em;
padding-top: 1em;
}
/* -----------lavender--2B3856------------ Horizontal Tiles TiddlyWiki Buttons ------------------------------ */
.tile-link {
width:100%;
max-width:800px;
background-color: #e6eeff;
color:#182955;
text-align:center;
border: none;
padding:10px;
margin:2px;
font-size: 24px;
cursor: pointer;
}
.tile-link:hover {
background-color:white;
text-color:red;
text-align:center;
text-decoration: none;
border: none;
padding:10px;
margin:2px;
font-size: 24px;
cursor: pointer;
}
/* ------------------------------ blockquote for mnemonic ------------------------------ */
blockquote {
font-weight: bold;
color: blue;
}
blockquote > p {
display: block;
margin-block-start: 1em;
margin-block-end: 0px;
margin-inline-start: 0px;
margin-inline-end: 0px;
}
/* ------------------------------ definition for mnemonic ------------------------------ */
dl {
display: block;
margin-block-start: 0px;
margin-block-end: 1em;
margin-inline-start: 0px;
margin-inline-end: 0px;
}
dl > dt {
font-weight: bold;
font-style: italic;
color: blue;
margin: 0 0 0 40px;
}
dl > dd {
color: grey;
margin: 0 0 0 40px;
text-align: left;
}
/* ---------- image description text ----------- */
dd {
color: grey;
margin: 0;
text-align: center;
}
/* ---------- description term ----------- */
dt {
font-weight: bold;
font-style: italic;
color: blue;
}
/* ------------------------------ italics/emphasis for Definitions------------------------------ */
em {
font-style: italic;
color: deeppink;
}
/* -------------------------- highlighted lines --------------------------- */
code {
max-width: 550px;
text-align: center;
margin: 0px;
padding: 1px 3px 2px;
color: black;
background: yellow;
border-width: 0px;
border-radius: 8px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
/* ------------------------------multiline block box------------------------------ */
pre {
max-width: 100%;
margin: auto;
border-radius: 15px;
padding: 10px;
background-color: #e6eeff;
}
hr {
max-width:80%;
margin: auto;
}
/* -----------------0050ff-------------headings------------------------------ */
h1, h2, h3, h4, h5, h6{
color: #0040ff;
}
.tc-title{
color: #182955;
}
/* ------------------------------ misc ------------------------------ */
.borderless,
.borderless table,
.borderless td,
.borderless tr,
.borderless th,
.borderless tbody
{ border:0 !important; }
.twocolumns { display:block;
-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
column-count:2; column-gap:1em; column-width:50%; /* Opera */
.threecolumns { display:block;
-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33.3%; /* FireFox */
-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33.3%; /* Safari */
column-count:3; column-gap:1em; column-width:33.3%; /* Opera */
.fourcolumns { display:block;
-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
column-count:4; column-gap:1em; column-width:25%; /* Opera */
}
div.tiddler.viewer {
color: #575352;
}
.body {
color: #575352;
}
div.navi {
float: right;
position: sticky;
left: 950px;
top: 750px;
bottom: 50px;
z-index: 300;
}
.table-striped tbody tr:nth-child(even) td {
background: #f9f9f9;
}
.table-striped tbody tr:nth-child(odd) td {
background: #ffffff;
}
table tr.evenRow td{
background-color: #f0f0f0;
}
<center>
{{Tagpils}}
<$button class="tile-link"><$action-navigate $to="Table Of Contents"/>TABLE OF CONTENTS</$button>
<$button class="tile-link"><$action-navigate $to="Quick ED Reference"/>QUICK ED REFERENCE</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care"/>CRITICAL CARE REFERENCE</$button>
<$button class="tile-link"><$action-navigate $to="ICU Infusions"/>ICU INFUSIONS</$button>
<$button class="tile-link"><$action-navigate $to="Procedures"/>PROCEDURES</$button>
<a href="https://bnf.nice.org.uk" target="_blank"><$button class="tile-link">BNF</$button></a>
<a href="https://www.uptodate.com/login" target="_blank"><$button class="tile-link">~UpToDate</$button></a>
<a href="https://oxfordmedicine.com/view/10.1093/med/9780198797425.001.0001/med-9780198797425" target="_blank"><$button class="tile-link">Acute Medicine</$button></a>
</center>
!!! <center>''STANDARD ADMISSION ORDERS''</center>
* Please admit the patient ↓ Dr. _ _ _ _ _ _ _ _ _ _ _ _ in MICU/MW/FW/KW/SW
* ''Diet:'' NPO/Liquid diet/Regular Diet/Low Na, Low Fat Diet/Diabetic Diet
* ''Activity:'' Up ad lib / Up to chair with assistance / Ambulate with assistance / Bed rest with bathroom privileges with assistance / Bed rest with bedside commode with assistance / Bed rest / Other
* ''Vitals(BP, PR, RR, Temp, Sats):'' q1h / q2h / q4h / q6h / q8h / q12h
* ''Misc:'' Daily weights / NG tube to suction / Insert Foley / Insert NG
* ''IV FLUIDS:'' Select NS or RL. Only in those patients who cannot meet their normal needs through oral or enteral routes.
* If patients need IV fluids for routine maintenance alone, give 25–30 ml/kg/day
* ''Give less fluid (20–25 ml/kg/day) for patients who are:''
*# are older or frail.
*# have renal impairment or cardiac failure.
*# are malnourished and at risk of refeeding syndrome
* ''IV Antibiotics:'' commonly used ones are
** Inj Ceftriaxone 1 gm IV q12h OR
** Inj Augmentin 1.2 gm IV q12h OR
** Inj Ciplox 400 mg IV q12h OR
** Inj Metrogyl 500 mg IV q8h OR
** Inj Pip-Taz 4.5 IV q8h OR
** Inj Mero 1 gm IV q8h OR
** Inj Levoflox 500 mg IV q24h
* If Diabetes or RBS>200 then monitor RBS with glucometer TDS or more frequently. Control sugars with sliding scale. If the patient is tolerating oral feeds the restart home DM meds.
''SOS meds:''
* ''Nausea/Vomiting:''
** Inj Vomikind 4 mg IV q8h OR
** Inj Stemetil 12.5 mg IV q6h OR
** Inj Perinorm 10 mg IV q8h
* ''Acidity/reflux:''
** Inj Aciloc 1 amp IV q12h OR
** Inj Pantop 40 mg IV OD
* ''Musculoskeletal pain:'' Inj Diclofenac 1 amp IV q12h
* ''Pain:'' Inj Tramadol 1 amp IV q12h
* ''Abdominal pain:'' Inj Anafortan 1 amp IV OR Inj Buscopan 1 amp IV OR Inj Drotin 1 amp IV
* ''Pain, fever:'' Tab Calpol 500 mg q6h SOS pain/temp > 100.4F
* ''Anxiety/insomnia:''
** Tab Lorazepam (Ativan) 1 mg STAT OR
** Tab Alprazolam 0.25 mg OR
** Tab Zolpidem 10 mg HS SOS insomnia
* ''Diarrhea:'' Tab Loperamide 4 mg 2 mg STAT FOR LOOSE STOOL
* ''Constipation:''
** Syr Cremaffin Plus 2-3 tsp HS or
** Supp Dulcolax 10 mg rectally STAT or
** Syr Lactulose 30 ml HS or
** P.C Enema STAT
* ''Labs:'' select the pertinent ones.
* ⃞ RBS with glucometer STAT
* ⃞ CBC
* ⃞ ABG
* ⃞ Hb,TC,DC,ESR
* ⃞ KFT
* ⃞ LFT
* ⃞ FBS,PP
* ⃞ Lipid Profile
* ⃞ TSH
* ⃞ HbA1c
* ⃞ Widal
* ⃞ MP card
* ⃞ Urine routine with C/S
* ⃞ Blood cultures
* ⃞ RBS with Glucometer STAT
* ⃞ CPK-MB
* ⃞ Troponin-T
* ⃞ Stool occult blood□ Sputum gram stain, AFB
* ⃞ PT/INR
* ⃞ Viral Markers
* ⃞ Amylase
* ⃞ Lipase
* ''Radiology:''
* ⃞ CXR-PA, □ X-ray Abd erect
* ⃞ USG abdomen
* ⃞ CT head NC
* ⃞ Cardiology:
* ⃞ ECG
* ⃞ 2D ECHO
* Order for blood transfusion if needed.
<div id="body_content">
Autosomal dominant polycystic kidney disease (ADPKD) is the most common inherited cause of kidney disease, affecting 1 in 1,000 Caucasians. Two disease loci have been identified, PKD1 and PKD2, which code for polycystin-1 and polycystin-2 respectively<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><span class="concept" data-cid="709"><b>ADPKD type 1</b></span></th><th><span class="concept" data-cid="710"><b>ADPKD type 2</b></span></th></tr></thead><tbody><tr><td>85% of cases</td><td>15% of cases</td></tr><tr><td>Chromosome 16</td><td>Chromosome 4</td></tr><tr><td>Presents with renal failure earlier</td><td></td></tr></tbody></table></div><br>The screening investigation for relatives is abdominal <span class="concept" data-cid="708">ultrasound</span>:<br><br>Ultrasound diagnostic criteria (in patients with positive family history)<br><ul><li>two cysts, unilateral or bilateral, if aged < 30 years</li><li>two cysts in both kidneys if aged 30-59 years</li><li>four cysts in both kidneys if aged > 60 years</li></ul><br><b>Management</b><br><br>For select patients, <span class="concept" data-cid="8793">tolvaptan</span> (<span class="concept" data-cid="9115">vasopressin receptor 2 antagonist</span>) may be an option. NICE recommended it as an option for treating ADPKD in adults to slow the progression of cyst development and renal insufficiency only if:<br><ul><li>they have chronic kidney disease stage 2 or 3 at the start of treatment</li><li>there is evidence of rapidly progressing disease and</li><li>the company provides it with the discount agreed in the patient access scheme.</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb052b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb052.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb052b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Extensive cysts are seen in an enlarged kidney</div></div>
<div id="notecontent">The following is based on the 2015 Resus Council guidelines. Please see the link for more details, below is only a very brief summary of key points.<br><br>Major points include:<br><ul><li>ratio of chest compressions to ventilation is 30:2</li><li>chest compressions are now continued while a defibrillator is charged</li><li>during a VF/VT cardiac arrest, adrenaline <span id="concept_popover_id_9925" class="concept concept-0 trigger-link" data-cid="9925" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9925'>You've never been tested on this concept</div><br><div id='div_concept_rating9925' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(142,255,0)'>Importance: <b>72</b></span> </div>" data-original-title="The recommended dose of adrenaline to give during advanced ALS is 1mg">1 mg</span> is given once chest compressions have restarted after the third shock and then every 3-5 minutes (during alternate cycles of CPR). </li><li><span class="concept" data-cid="9130">a single shock for VF/pulseless VT</span> followed by 2 minutes of CPR, rather than a series of 3 shocks followed by 1 minute of CPR</li><li><span class="concept" data-cid="9625">if the cardiac arrested is witnessed in a monitored patient (e.g. in a coronary care unit) then the 2015 guidelines recommend 'up to three quick successive (stacked) shocks', rather than 1 shock followed by CPR</span></li><li>asystole/pulseless-electrical activity: <span class="concept" data-cid="8608">adrenaline</span> <span id="concept_popover_id_9925" class="concept concept-0 trigger-link" data-cid="9925" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9925'>You've never been tested on this concept</div><br><div id='div_concept_rating9925' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(142,255,0)'>Importance: <b>72</b></span> </div>" data-original-title="The recommended dose of adrenaline to give during advanced ALS is 1mg">1mg</span> should be given as soon as possible. Should be treated with 2 minutes of CPR prior to reassessment of the rhythm</li><li><span class="concept" data-cid="198">atropine</span> is no longer recommended for routine use in asystole or pulseless electrical activity (PEA)</li><li>delivery of drugs via a tracheal tube is no longer recommended</li><li>following successful resuscitation oxygen should be titrated to achieve saturations of 94-98%. This is to address the potential harm caused by hyperoxaemia</li></ul><br>Reversible causes of cardiac arrest:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>The 'Hs'</th><th>The 'Ts'</th></tr></thead><tbody><tr><td><ul><li>Hypoxia</li><li>Hypovolaemia</li><li>Hyperkalaemia, hypokalaemia, hypoglycaemia, hypocalcaemia, acidaemia and other metabolic disorders</li><li>Hypothermia</li></ul></td><td><li>Thrombosis (coronary or pulmonary)</li><li><span class="concept" data-cid="5831">Tension pneumothorax</span></li><li>Tamponade – cardiac</li><li>Toxins</li></td></tr></tbody></table></div></div>
!!Autoimmune haemolytic anaemia
(AIHA) may be divided in to 'warm' and 'cold' types, according to at what temperature the antibodies best cause haemolysis. It is most commonly idiopathic but may be secondary to a lymphoproliferative disorder, infection or drugs. AIHA is characterised by a positive direct antiglobulin test (Coombs' test)
''Warm AIHA''
In warm AIHA the antibody (usually ~IgG) causes haemolysis best at body temperature and haemolysis tends to occur in extravascular sites, for example the spleen. Management options include steroids, immunosuppression and splenectomy
Causes of warm AIHA
* autoimmune disease: e.g. systemic lupus erythematosus*
* neoplasia: e.g. lymphoma, CLL
* drugs: e.g. methyldopa
''Cold AIHA''
The antibody in cold AIHA is usually ~IgM and causes haemolysis best at 4 deg C. Haemolysis is mediated by complement and is more commonly intravascular. Features may include symptoms of Raynaud's and acrocynaosis. Patients respond less well to steroids
Causes of cold AIHA
* neoplasia: e.g. lymphoma
* infections: e.g. mycoplasma, EBV
*systemic lupus erythematosus can rarely be associated with a mixed-type autoimmune haemolytic anaemia
<div id="notecontent">Acute kidney injury (AKI), previously termed acute renal failure, describes a reduction in renal function following an insult to the kidneys. In years gone by the kidneys were very much a neglected organ in acute medicine - the recognition of decreasing renal function was often slow and action limited. Around 15% of patients admitted to hospital develop AKI. <br><br>Whilst most patients with AKI recover their renal function there are many patients who will have long term impaired kidney function due to AKI. As well as long-term morbidity, AKI may also result in acute complications including death. Whilst exact figures are difficult to calculate NICE estimate that inpatient mortality of AKI in the UK might typically be 25-30% or more.<br><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb092b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb092.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb092b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Specimen from a patient who had an acute kidney injury. Note the marked pallor of the cortex in certain areas, contrasting to the darker areas of surviving medullary tissue. <br></div><br><br><b>What causes AKI?</b><br><br>Causes of AKI are traditionally divided into prerenal, intrinsic and postrenal causes<br><br><b>Prerenal</b><br><br>Think of what causes big problems in other major organs. In the heart a lack of blood (ischaemia) to the myocardium causes a myocardial infarction. In a similar fashion 85% of strokes are causes be ischaemia to the brain. The same goes for the kidneys. One of the major causes of AKI is ischaemia, or lack of blood flowing to the kidneys. <br><br>Examples<br><ul><li>hypovolaemia secondary to diarrhoea/vomiting</li><li>renal artery stenosis</li></ul><br><b>Intrinsic</b><br><br>The second group of causes relate to intrinsic damage to the glomeruli, renal tubules or interstitium of the kidneys themselves. This may be due to toxins (drugs, contrast etc) or immune-mediated glomuleronephritis.<br><br>Examples<br><ul><li>glomerulonephritis</li><li>acute tubular necrosis (ATN)</li><li>acute interstitial nephritis (AIN), respectively</li><li>rhabdomyolysis</li><li>tumour lysis syndrome</li></ul><br><b>Postrenal</b><br><br>The third group relates to problems after the kidneys. This is where there is an obstruction to the urine coming from the kidneys resulting in things 'backing-up' and affecting the normal renal function. An example could be a unilateral ureteric stone or bilateral hydroneprosis secondary to acute urinary retention caused by benign prostatic hyperplasia.<br><br>Examples<br><ul><li>kidney stone in ureter or bladder</li><li>benign prostatic hyperplasia</li><li>external compression of the ureter</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb093b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb093.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb093b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">This patient had an invasive papillary tumour of the distal left ureter, indicated by the arrow. This resulted in the ureter becoming blocked, resulting in a left hydroureter and hydronephrosis. Note the thinning of the renal cortex of the left kidney compared to the right.<br></div><br><br><b>Who is at an increased risk of AKI?</b><br><br>One of the keys to reducing the incidence of AKI is identifying patient who are at increased risk. NICE support this approach and have published guidelines suggesting which patients are at greater risk. <br><br>Risk factors for AKI include:<br><ul><li>chronic kidney disease</li><li>other organ failure/chronic disease e.g. heart failure, liver disease, diabetes mellitus</li><li>history of acute kidney injury</li><li>use of drugs with nephrotoxic potential (e.g. <span class="concept" data-cid="6907">NSAIDs</span>, <span class="concept" data-cid="6908">aminoglycosides</span>, <span class="concept" data-cid="6909">ACE inhibitors</span>, <span class="concept" data-cid="6910">angiotensin II receptor antagonists</span> [ARBs] and <span class="concept" data-cid="6911">diuretics</span>) within the past week</li><li>use of iodinated contrast agents within the past week</li><li>age 65 years or over</li></ul>oliguria (urine output less than 0.5 ml/kg/hour)<br><ul><li>neurological or cognitive impairment or disability, which may mean limited access to fluids because of reliance on a carer</li></ul><br><br><b>Preventing AKI</b><br><br>By identifying patients at increased risk of AKI (see above) it may be possible to take steps to reduce the risk. For example, patients who are at risk of AKI and who are undergoing an investigation requiring contrast are usually given IV fluids to reduce the risk. Certain drugs such as ACE inhibitors and ARBs may also be temporarily stopped.<br><br><br><b>What happens when kidneys stop working?</b><br><br>It's best to work backwards and think about what kidneys actually do. The kidneys are primarily responsible for fluid balance and maintaining homeostasis. Therefore two of the key ways AKI may be detected are:<br><ul><li>a reduced urine output. This is termed oliguria and is defined as a <span class="concept" data-cid="1964">urine output of less than 0.5 ml/kg/hour</span></li><li>fluid overload</li><li>a rise in molecules that the kidney normal excretes/maintains a careful balance of. Examples include potassium, urea and creatinine</li></ul><br><br><b>Symptoms and signs</b><br><br>Many patients with early AKI may experience no symptoms. However, as renal failure progresses the following may be seen:<br><ul><li>reduced urine output</li><li>pulmonary and peripheral oedema</li><li>arrhythmias (secondary to changes in potassium and acid-base balance)</li><li>features of uraemia (for example, pericarditis or encephalopathy)</li></ul><br><br><b>Detection</b><br><br>One of the most common blood tests performed on the wards is 'urea and electrolytes' or 'U&Es'. This returns a number of markers, including<br><ul><li>sodium</li><li>potassium</li><li>urea</li><li>creatinine</li></ul><br>NICE recommend that we can use a variety of different criteria to make an official diagnosis of AKI. They state:<br><br><div class="bs-callout bs-callout-default"><i><i><br>Detect acute kidney injury, in line with the (p)RIFLE, AKIN or KDIGO definitions, by using any of the following criteria:<br><ul><li>a rise in serum creatinine of 26 micromol/litre or greater within 48 hours</li><li>a 50% or greater rise in serum creatinine known or presumed to have occurred within the past 7 days</li><li>a fall in urine output to <span class="concept" data-cid="1964">less than 0.5 ml/kg/hour</span> for more than 6 hours in adults and more than </li></ul></i></i></div><br>Urinanalysis<br><ul><li>all patients with suspected AKI should have urinanalysis</li></ul><br>Imaging<br><ul><li>if patients have no identifiable cause for the deterioration or are at risk of urinary tract obstruction they should have a <b>renal ultrasound</b> within 24 hours of assessment.</li></ul><br><br><b>Management</b><br><br>The management of AKI is largely supportive. This means patients require careful fluid balance to ensure that the kidneys are properly perfused but not excessively to avoid fluid overload. It is also important to <span id="concept_popover_id_4196" class="concept concept-3-u trigger-link" data-cid="4196" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4196'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating4196' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(10,255,0)'>Importance: <b>98</b></span> </div>" data-original-title="Medications to stop when a patient is in acute kidney injury: ACE-I/ARB, NSAIDs and diuretics"> review a patient's medication list</span> to see what treatments may either be exacerbating their renal dysfunction or may be dangerous as a consequence of renal dysfunction. The table below gives some examples of common drugs:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Usually safe to continue in AKI</th><th>Should be stopped in AKI as may worsen renal function</th><th>May have to be stopped in AKI as increased risk of toxicity (but doesn't usually worsen AKI itself)</th></tr></thead><tbody><tr><td>• <span class="concept" data-cid="6901">Paracetamol</span><br>• <span class="concept" data-cid="6902">Warfarin</span> <br>• <span class="concept" data-cid="6903">Statins</span><br>• <span class="concept" data-cid="6904">Aspirin (at a cardioprotective dose of 75mg od)</span><br>• <span class="concept" data-cid="6905">Clopidogrel</span><br>• <span class="concept" data-cid="6906">Beta-blockers</span></td><td>• <span class="concept" data-cid="6907">NSAIDs</span> (<span class="concept" data-cid="2070">except if aspirin at cardiac dose e.g. 75mg od</span>)<br>• <span class="concept" data-cid="6908">Aminoglycosides</span><br>• <span class="concept" data-cid="6909">ACE inhibitors</span><br>• <span class="concept" data-cid="6910">Angiotensin II receptor antagonists</span><br>• <span class="concept" data-cid="6911">Diuretics</span><br></td><td>• <span class="concept" data-cid="6912">Metformin</span><br>• <span class="concept" data-cid="6913">Lithium</span><br>• <span class="concept" data-cid="6914">Digoxin</span></td></tr></tbody></table></div><br>Treatments which are <b>not recommend</b> include the routine use of loop diuretics (to artificially boost urine output) and low-dose dopamine (in an attempt to increase renal perfusion). There is however a role for loop diuretics in patients who experience significant fluid overload.<br><br>Hyperkalaemia also needs prompt treatment to avoid arrhythmias which may potentially be life-threatening. The table below categorises the different treatments for hyperkalaemia:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Stabilisation of the cardiac membrane</th><th>• Short-term shift in potassium from extracellular to intracellular fluid compartment</th><th>• Removal of potassium from the body</th></tr></thead><tbody><tr><td>• <span class="concept" data-cid="6915">Intravenous calcium gluconate</span></td><td>• <span class="concept" data-cid="6916">Combined insulin/dextrose infusion</span><br>• <span class="concept" data-cid="6917">Nebulised salbutamol</span><br></td><td>• <span class="concept" data-cid="6918">Calcium resonium (orally or enema)</span><br>• <span class="concept" data-cid="6919">Loop diuretics</span><br>• <span class="concept" data-cid="6920">Dialysis</span></td></tr></tbody></table></div><br>Specialist input from a nephrologist is required for cases where the cause is not known or where the AKI is severe.<br><br>All patients with suspected AKI secondary to urinary obstruction require prompt review by a urologist.<br><br>Renal replacement therapy (e.g. haemodialysis) is used when a patient is not responding to medical treatment of complications, for example hyperkalaemia, acidosis or uraemia.</div>
* Increase in Cr by ≥0.3 mg/dL w/i 48 h; or
* Increase in Cr by ≥1.5 times baseline, which is known or presumed to have occurred w/i prior 7 d; or
* Urine volume <0.5 mL/kg/h for 6 h
* Decreased urine output, weight gain, fluid retention (peripheral edema, anasarca, ascites), fatigue, anorexia, N/V, pruritus, altered sensorium, thirst/orthostasis (prerenal)?
* ROS (fever, rash, flank pain, hematuria)
* PMH: Baseline renal impairment, CHF, liver dz, SLE, multiple myeloma
* MEDS (ACEI/ARB, NSAIDs, aminoglycosides, other abx, cisplatin, amphotericin B, diuretics)
* CBC, KFT, FENa% = (Urine Na × Plasma Cr)/(Plasma Na × Urine Cr) × 100
* Consider LFTs, BNP if indicated
* EKG for cardiac electrical instability from potential electrolyte abx
* Bedside USG: cardiac, IVC, renal u/s
* Imaging: Renal u/s (r/o obstruction, assess flow); consider CT abdomen if c/f pelvic mass, Doppler u/s of renal vasculature
<center>
|!|!Pre-Renal|!Intrinsic|!Post-Renal|
|!FENa| <1% | >1% | >4% |
|!UNa| <20 | >40 | >40 |
</center>
* ''Pre-Renal:'' Anything causing decreased effective renal perfusion: hypovolemia, heart failure, renal artery stenosis, sepsis, etc. Remember, contrast-induced nephropathy will often look pre-renal.
* ''Intrinsic:'' ATN, AIN, glomerulonephritis, etc.
* ''Post-Renal:'' Obstruction (e.g. BPH, bladder stone, bilateral ureteral obstruction).
* ''Treatment''
** ''Prerenal'': Correct volume status/perfusion pressure (IVFs, pressors, PRBCs if indicated, diuresis/inotropes if cardiorenal)
** ''Intrinsic'': Eliminate nephrotoxins, treat underlying cause, consider glucocorticoids
** ''Postrenal'': Transurethral or suprapubic catheter placement; may require ureteric stents or percutaneous nephrostomy tube placement
* Consider sodium bicarbonate if pH <7.2 or HCO3 <15 mmol/L as bridge to dialysis
* Indications for Emergent Dialysis and Renal Replacement
* Therapy “''A, E, I, O, U''”
* Acidosis (pH < 7.1)
* Electrolyte imbalance (hyperkalemia, hypocalcemia, hyperphosphatemia)
* Intoxication (lithium, salicylates, ethylene glycol, methanol, among others)
* Overload (volume overload)
* Uremia (pericarditis, encephalopathy, neuropathy, bleeding)
* Cx: Intravascular volume overload, hyponatremia, hyperkalemia, hyperphosphatemia, hypocalcemia, hypermagnesemia, metabolic acidosis, uremia, anemia, arrhythmias
|!RIFLE Criteria|!Serum creatinine|!GFR|!Urine output|
|!Risk, RIFLE-R|1.5-2x above baseline|>25% decrease below baseline|<0.5 mL/kg/hr x 6 hr|
|!Injury, RIFLE-I|>2–3x above baseline|>50% decrease below baseline|<0.5 mL/kg/hr x 12 hr|
|!Failure, RIFLE-F (RIFLE-FO if oliguria)|>3x above baseline, ≥4 mg/dL (350 µmol/L), or acute rise ≥0.5 mg/dL (44 µmol/L)|>75% decrease below baseline|<0.3 mL/kg/hr x 24 hr (oliguria), or anuria x 12 hrs|
|!Loss, RIFLE-L|Persistent AKI (on renal replacement therapy for >4 weeks)|<|<|
|!ESRD, RIFLE-E|End stage renal disease (on dialysis for >3 months)|<|<|
<div id="notecontent">In 2016 the Chief Medical Officer proposed new guidelines in relation to the safe consumption of alcohol following an expert group report. The most significant change has been a reduction in the number of units it is recommending men do not exceed from 21 to 14, in line with the recommendations for women.<br><br>The government now recommend the following:<br><ul><li>men <b>and</b> women should drink no more than 14 units of alcohol per week</li><li>they advise <i>'if you do drink as much as 14 units per week, it is best to spread this evenly over 3 days or more'</i></li><li>pregnant women should not drink. The wording of the official advice is '<i>If you are pregnant or planning a pregnancy, the safest approach is not to drink alcohol at all, to keep risks to your baby to a minimum. Drinking in pregnancy can lead to long-term harm to the baby, with the more you drink the greater the risk.</i>'</li></ul><br>One unit of alcohol is equal to 10 mL of pure ethanol. The 'strength' of an alcoholic drink is determined by the 'alcohol by volume' (ABV).<br><br>Examples of one unit of alcohol:<br><ul><li>25ml single measure of spirits (ABV 40%)</li><li>a third of a pint of beer (ABV 5 to 6%)</li><li>half a 175ml 'standard' glass of red wine (ABV 12%)</li></ul><br>To calculate the number of units in a drink multiply the number of millilitres by the ABV and divide by 1,000. For example:<br><ul><li>half a 175ml 'standard' glass of red wine = 87.5 * 12 / 1000 = 1.05 units</li><li>one bottle of wine = 750 * 12 / 1000 = 9 units</li><li>one pint of 5% beer or lager = 568 * 5 / 1000 = 2.8 units</li></ul></div>
Nutritional support
* SIGN recommends alcoholic patients should receive oral thiamine if their 'diet may be deficient'
Drugs used
* benzodiazepines for acute withdrawal
* disulfram: promotes abstinence - alcohol intake causes severe reaction due to inhibition of acetaldehyde dehydrogenase. Patients should be aware that even small amounts of alcohol (e.g. In perfumes, foods, mouthwashes) can produce severe symptoms. Contraindications include ischaemic heart disease and psychosis
* acamprosate: reduces craving, known to be a weak antagonist of NMDA receptors, improves abstinence in placebo controlled trials
<div id="notecontent">In 2016 the Chief Medical Officer proposed new guidelines in relation to the safe consumption of alcohol following an expert group report. The most significant change has been a reduction in the number of units it is recommending men do not exceed from 21 to 14, in line with the recommendations for women.<br><br>The government now recommend the following:<br><ul><li>men <b>and</b> women should drink no more than 14 units of alcohol per week</li><li>they advise <i>'if you do drink as much as 14 units per week, it is best to spread this evenly over 3 days or more'</i></li><li>pregnant women should not drink. The wording of the official advice is '<i>If you are pregnant or planning a pregnancy, the safest approach is not to drink alcohol at all, to keep risks to your baby to a minimum. Drinking in pregnancy can lead to long-term harm to the baby, with the more you drink the greater the risk.</i>'</li></ul><br>One unit of alcohol is equal to 10 mL of pure ethanol. The 'strength' of an alcoholic drink is determined by the 'alcohol by volume' (ABV).<br><br>Examples of one unit of alcohol:<br><ul><li>25ml single measure of spirits (ABV 40%)</li><li>a third of a pint of beer (ABV 5 to 6%)</li><li>half a 175ml 'standard' glass of red wine (ABV 12%)</li></ul><br>To calculate the number of units in a drink multiply the number of millilitres by the ABV and divide by 1,000. For example:<br><ul><li>half a 175ml 'standard' glass of red wine = 87.5 * 12 / 1000 = 1.05 units</li><li>one bottle of wine = 750 * 12 / 1000 = 9 units</li><li>one pint of 5% beer or lager = 568 * 5 / 1000 = 2.8 units</li></ul></div>
---
>2 Pegs a Day
---
`Alcohol withdrawal results from decreased inhibitory GABA and increased NMDA glutamate transmission`
<div id="notecontent">Mechanism<br><ul><li>chronic alcohol consumption enhances GABA mediated inhibition in the CNS (similar to benzodiazepines) and inhibits NMDA-type glutamate receptors</li><li>alcohol withdrawal is thought to be lead to the opposite (<span id="concept_popover_id_4799" class="concept concept-3-u trigger-link" data-cid="4799" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4799'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating4799' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(81,255,0)'>Importance: <b>84</b></span> </div>" data-original-title="Alcohol withdrawal results from decreased inhibitory GABA and increased NMDA glutamate transmission">decreased inhibitory GABA and increased NMDA glutamate transmission</span>)</li></ul><br><span class="concept" data-cid="805">Features</span><br><ul><li>symptoms start at 6-12 hours: tremor, sweating, tachycardia, anxiety</li><li>peak incidence of seizures at 36 hours</li><li>peak incidence of delirium tremens is at 48-72 hours: coarse tremor, confusion, delusions, auditory and visual hallucinations, fever, tachycardia</li></ul><br>Management<br><ul><li><span class="concept" data-cid="9667">patients with a history of complex withdrawals from alcohol (i.e. delirium tremens, seizures, blackouts) should be admitted to hospital for monitoring until withdrawals stabilised</span></li><li>first-line: <span class="concept" data-cid="8370">benzodiazepines</span> e.g. <span class="concept" data-cid="5044">chlordiazepoxide</span>. <span class="concept" data-cid="2218">Lorazepam</span> may be preferable in patients with hepatic failure. Typically given as part of a reducing dose protocol</li><li>carbamazepine also effective in treatment of alcohol withdrawal</li><li>phenytoin is said not to be as effective in the treatment of alcohol withdrawal seizures</li></ul></div>
Allergic conjunctivitis may occur alone but is often seen in the context of hay fever
Features
* Bilateral symptoms conjunctival erythema, conjunctival swelling (chemosis)
* Itch is prominent
* the eyelids may also be swollen
* May be a history of atopy
* May be seasonal (due to pollen) or perennial (due to dust mite, washing powder or other allergens)
Management of allergic conjunctivitis
* first-line: topical or systemic antihistamines
* second-line: topical mast-cell stabilisers, e.g. Sodium cromoglicate and nedocromil
<div id="notecontent"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Skin prick test</b></th><th>Most commonly used test as easy to perform and inexpensive. Drops of diluted allergen are placed on the skin after which the skin is pierced using a needle. A large number of allergens can be tested in one session. Normally includes a histamine (positive) and sterile water (negative) control. A wheal will typically develop if a patient has an allergy. Can be interpreted after 15 minutes<br><br>Useful for food allergies and also pollen</th></tr></thead><tbody><tr><td><b>Radioallergosorbent test (RAST)</b></td><td>Determines the amount of IgE that reacts specifically with suspected or known allergens, for example IgE to egg protein. Results are given in grades from 0 (negative) to 6 (strongly positive)<br><br>Useful for food allergies, inhaled allergens (e.g. Pollen) and wasp/bee venom<br><br>Blood tests may be used when skin prick tests are not suitable, for example if there is extensive eczema or if the patient is taking antihistamines</td></tr><tr><td><b>Skin patch testing</b></td><td>Useful for contact dermatitis. Around 30-40 allergens are placed on the back. Irritants may also be tested for. The patches are removed 48 hours later with the results being read by a dermatologist after a further 48 hours</td></tr></tbody></table></div></div>
<div id="body_content">
Allopurinol is used in the prevention of gout. It works by inhibiting <span class="concept" data-cid="908">xanthine oxidase</span>.<br><br>Initiating allopurinol prophylaxis - see indications below<br><ul><li>allopurinol should not be started until <span class="concept" data-cid="4354">2 weeks</span> after an acute attack has settled</li><li>initial dose of 100 mg od, with the dose titrated every few weeks to aim for a serum uric acid of < 300 µmol/l</li><li>NSAID or colchicine cover should be used when starting allopurinol</li></ul><br>Indications for allopurinol*<br><ul><li>recurrent attacks - the British Society for Rheumatology recommend 'In uncomplicated gout uric acid lowering drug therapy should be started if a second attack, or further attacks occur within 1 year'</li><li>tophi</li><li>renal disease</li><li>uric acid renal stones</li><li>prophylaxis if on cytotoxics or diuretics</li></ul><br>*patients with Lesch-Nyhan syndrome often take allopurinol for life<br><br><br><b>Adverse effects</b><br><br>The most significant adverse effects are dermatological and patients should be warned to stop allopurinol immediately if they develop a rash:<br><ul><li>severe cutaneous adverse reaction (SCAR)</li><li>drug reaction with eosinophilia and systemic symptoms (DRESS)</li><li>Stevens-Johnson syndrome</li></ul><br>Certain ethnic groups such as the Chinese, Korean and Thai people seem to be at an increased risk of these dermatological reactions.<br><br><span class="concept" data-cid="9896">Patients at a high risk of severe cutaneous adverse reaction should be screened for the HLA-B *5801 allele</span>.<br><br><br><b>Interactions</b><br><br><span class="concept" data-cid="5722">Azathioprine</span><br><ul><li>metabolised to active compound 6-mercaptopurine</li><li>xanthine oxidase is responsible for the oxidation of 6-mercaptopurine to 6-thiouric acid</li><li>allopurinol can therefore lead to high levels of 6-mercaptopurine</li><li>a much reduced dose (e.g. 25%) must therefore be used if the combination cannot be avoided</li></ul><br>Cyclophosphamide<br><ul><li>allopurinol reduces renal clearance, therefore may cause marrow toxicity</li></ul><br>Theophylline<br><ul><li><span class="concept" data-cid="5723">allopurinol causes an increase in plasma concentration of theophylline by inhibiting its breakdown</span></li></ul></div>
Alopecia may be divided into scarring (destruction of hair follicle) and non-scarring (preservation of hair follicle)
Scarring alopecia
* trauma, burns
* radiotherapy
* lichen planus
* discoid lupus
* tinea capitis*
Non-scarring alopecia
* male-pattern baldness
* drugs: cytotoxic drugs, carbimazole, heparin, oral contraceptive pill, colchicine
* nutritional: iron and zinc deficiency
* autoimmune: alopecia areata
* telogen effluvium
** hair loss following stressful period e.g. surgery
* trichotillomania
*scarring may develop in untreated tinea capitis if a kerion develops
Alopecia areata is a presumed autoimmune condition causing localised, well demarcated patches of hair loss. At the edge of the hair loss, there may be small, broken 'exclamation mark' hairs
Hair will regrow in 50% of patients by 1 year, and in 80-90% eventually. Careful explanation is therefore sufficient in many patients. Other treatment options include:
* topical or intralesional corticosteroids
* topical minoxidil
* phototherapy
* dithranol
* contact immunotherapy
* wigs
Alport's syndrome is usually inherited in an X-linked dominant pattern*. It is due to a defect in the gene which codes for type IV collagen resulting in an abnormal glomerular-basement membrane (GBM). The disease is more severe in males with females rarely developing renal failure.
A favourite question is an Alport's patient with a failing renal transplant. This may be caused by the presence of anti-GBM antibodies leading to a Goodpasture's syndrome like picture.
Alport's syndrome usually presents in childhood. The following features may be seen:
* microscopic haematuria
* progressive renal failure
* bilateral sensorineural deafness
* lenticonus: protrusion of the lens surface into the anterior chamber
* retinitis pigmentosa
* renal biopsy: splitting of lamina densa seen on electron microscopy
Diagnosis
* molecular genetic testing
* renal biopsy
** electron microscopy: characteristic finding is of the longitudinal splitting of the lamina densa of the glomerular basement membrane, resulting in a 'basket-weave' appearance
* By the early 20s, ESRD
*in around 85% of cases - 10-15% of cases are inherited in an autosomal recessive fashion with rare autosomal dominant variants existing
<hr><center>''ALTEPLASE''</center><hr>
<center>''Adult Dosage''</center><hr>
''STEMI:''
* ''Patients >67 kg:'' Total dose: 100 mg over 1.5 hours; infuse 15 mg over 1-2 minutes. Infuse 50 mg over 30 minutes. Infuse remaining 35 mg of alteplase over the next hour.
* ''Patients ≤67 kg:'' Infuse 15 mg I.V. bolus over 1-2 minutes, then infuse 0.75 mg/kg (not to exceed 50 mg) over next 30 minutes, followed by 0.5 mg/kg over next 60 minutes (not to exceed 35 mg).
* ''Note:'' All patients should receive 162-325 mg of aspirin as soon as possible and then daily. Administer concurrently with heparin 60 units/kg bolus (maximum: 4000 units) followed by continuous infusion of 12 units/kg/hour (maximum: 1000 units/hour) and adjust to aPTT target of 50-70 seconds (or 1.5-2 times the upper limit of control).
''Acute massive or submassive pulmonary embolism (PE):''
* ''I.V.:'' 100 mg over 2 hours; may be administered as a 10 mg bolus followed by 90 mg over 2 hours. ''Note:'' Not recommended for submassive PE with minor RV dysfunction, minor myocardial necrosis, and no clinical worsening or low-risk PE (ie, normotensive, no RV dysfunction, normal biomarkers).
''Acute ischemic stroke:''
* ''I.V.:'' Within 3-4.5 hours of symptom onset ''Note:'' Initiation of anticoagulants (eg, heparin) or antiplatelet agents (eg, aspirin) within 24 hours after starting alteplase is not recommended; however, initiation of aspirin between 24-48 hours after stroke onset is recommended. Initiation of SubQ heparin (≤10,000 units) or equivalent doses of low molecular weight heparin for prevention of DVT during the first 24 hours of the 3-4.5 hour window trial can be given.
* ''Recommended total dose:'' 0.9 mg/kg (maximum total dose: 90 mg)
* ''Patients ≤100 kg:'' Load with 0.09 mg/kg (10% of 0.9 mg/kg dose) as an I.V. bolus over 1 minute, followed by 0.81 mg/kg (90% of 0.9 mg/kg dose) as a continuous infusion over 60 minutes.
* ''Patients >100 kg:'' Load with 9 mg (10% of 90 mg) as an I.V. bolus over 1 minute, followed by 81 mg (90% of 90 mg) as a continuous infusion over 60 minutes.
*''`DONezepil`'' is a reversible anticholinesterase inhibitor recommended as a `first line treatment` in moderate Alzheimer's dementia.
*''MEMantine'' is a NMDA-receptor antagonist that affects glutamate transmission. It is not recommended for first line treatment.
5-aminosalicyclic acid (5-ASA) is released in the colon and is not absorbed. It acts locally as an anti-inflammatory. The mechanism of action is not fully understood but 5-ASA may inhibit prostaglandin synthesis
;Sulphasalazine
* a combination of sulphapyridine (a sulphonamide) and 5-ASA
* many side-effects are due to the sulphapyridine moiety: rashes, oligospermia, headache, Heinz body anaemia, megaloblastic anaemia, lung fibrosis
* other side-effects are common to 5-ASA drugs (see mesalazine)
;Mesalazine
* a delayed release form of 5-ASA
* sulphapyridine side-effects seen in patients taking sulphasalazine are avoided
* mesalazine is still however associated with side-effects such as GI upset, headache, agranulocytosis, pancreatitis*, interstitial nephritis
;Olsalazine
* two molecules of 5-ASA linked by a diazo bond, which is broken by colonic bacteria
;*AcuPancreatitis is 7 times more common in patients taking mesalazine than sulfasalazine
!!Amiodarone
is a class III antiarrhythmic agent used in the treatment of atrial, nodal and ventricular tachycardias. The main mechanism of action is by blocking potassium channels which inhibits repolarisation and hence prolongs the action potential. Amiodarone also has other actions such as blocking sodium channels (a class I effect)
The use of amiodarone is limited by a number of factors
* very long half-life (20-100 days). For this reason, loading doses are frequently used
* should ideally be given into central veins (causes thrombophlebitis)
* has proarrhythmic effects due to lengthening of the QT interval
* interacts with drugs commonly used concurrently (p450 inhibitor) e.g. Decreases metabolism of warfarin
* numerous long-term adverse effects (see below)
Monitoring of patients taking amiodarone
* TFT, LFT, U&E, CXR prior to treatment
* TFT, LFT every 6 months
!!!Adverse effects of amiodarone use
* thyroid dysfunction: both hypothyroidism and hyper-thyroidism
* corneal deposits
* pulmonary fibrosis/pneumonitis
* liver fibrosis/hepatitis
* peripheral neuropathy, myopathy
* photosensitivity
* 'slate-grey' appearance
* thrombophlebitis and injection site reactions
* bradycardia
* lengths QT interval
;PFT-LFT-TFT
;~AmioDIrone
:Lung/Liver fibrosis/itis
:~HyperHypoThyroid
:peripheral Neuropathy-Myopathy
:Nausea - Vomiting
:Eye - Taste disturbances
:Bradycardia - Hypotension
:PROLONG Warfarin(Inhibit P450) - PROLONG QT
;SKIN - EYES - COLOR
:Corneal deposits-Photosensitivity-Slate-Grey
;Special IV access
:Thrombophlebitis (IV access)
!!!Drug interactions
* decreased metabolism of Warfarin, therefore increased INR
* increased Digoxin levels
---
<center>''Adult Dosage''</center><hr>
''Rate control in A fib, V tach, V fib:''
* Inj. Amiodarone (150 mg over 10 min then 1 mg/min x 6 hours then 0.5 mg/min x 18 hours). Mix 3 mL(1 amp) in 100 mL D5W & pass in 10 min then add 6 amp (18 ml) in 500 ml 5% Dextrose and pass 200 mL over next 6 hrs(11 dps/min) and 300 mL over next 18 hrs(5 dps/min)150 mg IV once over 10 min.
''ACLS: Pulseless VT or VF unresponsive to Shock-CPR-Pressor''
* 300 mg IV/IO push for the first dose
* 150 mg IV/IO over 3-5 min for the second dose if pulseless VT/VF persists
<hr><center>''Pediatric Dosage''</center><hr>
''PALS dose for treatment of pulseless VT or VF:''
* 5 mg/kg (maximum: 300 mg/dose) rapid I.V. bolus or I.O.; may repeat up to a maximum daily dose of 15 mg/kg
''PALS dose for treatment of perfusing tachycardias:''
* Loading dose: 5 mg/kg (maximum: 300 mg/dose) I.V. given over 20-60 minutes or I.O.; may repeat up to maximum daily dose of 15 mg/kg
Acute myeloid leukaemia is the more common form of acute leukaemia in adults. It may occur as a primary disease or following a secondary transformation of a myeloproliferative disorder.
Features are largely related to bone marrow failure:
* anaemia: pallor, lethargy, weakness
* neutropenia: whilst white cell counts may be very high, functioning neutrophil levels may be low leading to frequent infections etc
* thrombocytopenia: bleeding
* splenomegaly
* bone pain
Poor prognostic features
* > 60 years
* > 20% blasts after first course of chemo
* cytogenetics: deletions of chromosome 5 or 7
Acute promyelocytic leukaemia M3
* associated with t(15;17)
* fusion of PML and RAR-alpha genes
* presents younger than other types of AML (average = 25 years old)
* Auer rods (seen with myeloperoxidase stain)
* DIC or thrombocytopenia often at presentation
* good prognosis
Classification - French-American-British (FAB)
* MO - undifferentiated
* M1 - without maturation
* M2 - with granulocytic maturation
* M3 - acute promyelocytic
* M4 - granulocytic and monocytic maturation
* M5 - monocytic
* M6 - erythroleukaemia
* M7 - megakaryoblastic
---
>AML (15 to 60 yrs) - 15translocation17 - 15 to 16(60)years AMLA in Teens(15-16; 15-17)
*M3 of AML (Acute Promyelocytic Leukemia) - DIC - AuerRODS - MYELOperoxidase ⊕ - Retinoic Acid ATRA
>DICk/ROD in MYLA padda RITA(Retinoic) & AMLa (including M3)
---
| !AMOEBIASIS DRUGS |<|
|Metronidazole|Tab Metrogyl/Flagyl 400 mg TDS 7 days|
|Tinidazole|Tab Tiniba 500 mg BD for 5 days or 1000 mg BD for 3 days|
|Secnidazole|Tab Secnil 2 gm STAT|
|Nitazoxamide|Tab Nizonide 500 mg BD 3 day|
|Tinidazole+<br>Diloxanide|Tab Amirid BD for 3 days (50 mg/kg/day) with food|
|Metronidazole+<br>Diloxanide|Tab Aristogyl Plus TDS, 1 wk, with food|
|Metronidazole+<br>Furazolidone|Tab Metrogyl-F TDS, 1 wk, with food|
!!!<center>''AMOEBIC DESENTRY''</center>
<hr>
* Metro 400 TDS 7-10ds OR Tinidazole 2 gm OD 3ds; add Diloxanide 500 mg TDS 10ds.
<div id="body_content">
Anaphylaxis may be defined as a severe, life-threatening, generalised or systemic<span class="concept" data-cid="425"> hypersensitivity</span> reaction.<br><br>Common identified causes of anaphylaxis:<br><ul><li>food (e.g. nuts) - the most common cause in <span class="concept" data-cid="5516">children</span></li><li>drugs</li><li>venom (e.g. wasp sting)</li></ul><br>Anaphylaxis is one of the few times when you would not have time to look up the dose of a medication. The Resuscitation Council guidelines on anaphylaxis have recently been updated. Adrenaline is by far the most important drug in anaphylaxis and should be given as soon as possible. The recommended doses for <span class="concept" data-cid="2374">adrenaline, hydrocortisone and chlorphenamine</span> are as follows:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Adrenaline</b></th><th><b>Hydrocortisone</b></th><th><b>Chlorphenamine</b></th></tr></thead><tbody><tr><td><b><span class="concept" data-cid="8666">< 6 months</span></b></td><td>150 micrograms (0.15ml 1 in 1,000)</td><td>25 mg</td><td>250 micrograms/kg</td></tr><tr><td><b><span class="concept" data-cid="8667">6 months - 6 years</span></b></td><td>150 micrograms (0.15ml 1 in 1,000)</td><td>50 mg</td><td>2.5 mg</td></tr><tr><td><b>6-12 years</b></td><td><span class="concept" data-cid="1696">300 micrograms (0.3ml 1 in 1,000)</span></td><td>100 mg</td><td>5 mg</td></tr><tr><td><b>Adult and child > 12 years</b></td><td><span class="concept" data-cid="424">500 micrograms (0.5ml 1 in 1,000)</span></td><td>200 mg</td><td>10 mg</td></tr></tbody></table></div><br>Adrenaline can be repeated every <span class="concept" data-cid="4666">5 minutes</span> if necessary. The best site for IM injection is the anterolateral aspect of the middle third of the thigh.<br><br>Management following stabilisation:<br><ul><li>patients who have had emergency treatment for anaphylaxis should be observed for <span class="concept" data-cid="2648">6–12 hours</span> from the onset of symptoms, as it is known that <span class="concept" data-cid="3256">biphasic</span> reactions can occur in up to 20% of patients </li><li>sometimes it can be difficult to establish whether a patient had a true episode of anaphylaxis. Serum <span class="concept" data-cid="423">tryptase</span> levels are sometimes taken in such patients as they remain elevated for up to 12 hours following an acute episode of anaphylaxis.</li></ul></div><hr>
//Example: Within 10 minutes of receiving an intramuscular injection, a patient develops diffuse pruritus, wheezing, and shortness of breath.//
* What are the patient’s vital signs?
* Unstable: shift to ICU
* IVF for shock
* Can the patient still communicate?
* Inability to speak, dysphonia, hoarseness, or stridor probably indicates an upper airway obstruction from laryngospasm or laryngeal edema.
* What medication(s) did the patient receive?
* Stop the medication/transfusion
* Note swelling of lips, tongue, and oropharynx.
* Stridor or wheeze?
* Generalized flushing, urticaria/angioedema?
* CXR to exclude other causes
* ECG if needed
* Treatment should start immediately
* Epinephrine 0.5 mL IM STAT for laryngeal edema, bronchospasm, or urticaria. May be repeated every 10-15 minutes to a total of 3 doses.
* Patients with severe hypotension, severe bronchospasm, severe upper airway edema may be administered intravenous epinephrine given as 0.5–1.0 mL of 1:10,000 dilution in bolus fashion (can be given in intervals of 5–10 minutes).
* If no improvement is seen, a continuous infusion of epinephrine (1–4 μg/min) titrated to effect may be administered.
* Oxygen by face mask if dyspneic.
* Intubation if severely somnolent or hypoxemic.
* Tracheostomy if upper airway edema
* Salbutamol nebulization (0.5 mL of 0.5% solution in 2.5 mL of saline) for persistent bronchospasm.
* Antihistamines. Inj Avil 25 mg IV/IM STAT
* Inj Ranitidine 50 mg IV or 150 mg PO Q 8 hr
* Inj Methylprednisolone 120 mg IV × 1 dose then 60 mg IV Q 6 hr in anaphylactic bronchospasm.
* NS bolus for Hypotension
* Vasopressor medications if needed
* Monitoring. Shift to ICU
<div id="body_content">
There are two main types of anti-neutrophil cytoplasmic antibodies (ANCA) - cytoplasmic (cANCA) and perinuclear (pANCA)<br><br>For the exam, remember:<br><ul><li>cANCA - granulomatosis with polyangiitis (Wegener's granulomatosis)</li><li>pANCA - Churg-Strauss syndrome + others (see below)</li></ul><br><span class="concept" data-cid="343">cANCA</span><br><ul><li>most common target serine proteinase 3 (PR3)</li><li>some correlation between cANCA levels and disease activity</li><li>granulomatosis with polyangiitis, positive in > 90%</li><li>microscopic polyangiitis, positive in 40%</li></ul><br><span class="concept" data-cid="343">pANCA</span><br><ul><li><span class="concept" data-cid="9795">most common target is myeloperoxidase (MPO)</span></li><li>cannot use level of pANCA to monitor disease activity</li><li>associated with immune crescentic glomerulonephritis (positive in c. 80% of patients)</li><li>microscopic polyangiitis, positive in 50-75%</li><li>Churg-Strauss syndrome, positive in 60%</li><li>primary sclerosing cholangitis, positive in 60-80%</li><li>granulomatosis with polyangiitis, positive in 25%</li></ul><br>Other causes of positive ANCA (usually pANCA)<br><ul><li>inflammatory bowel disease (UC > Crohn's)</li><li>connective tissue disorders: RA, SLE, Sjogren's</li><li>autoimmune hepatitis</li></ul></div>
<hr>
P anca - Primary sclerosing cholangitis(&ulcerative colitis) - microscopic Polyangitis - churg strauss<br>
C anca - Wegener <br>
<hr>
aNca - AN Ulcer - asca -ve<br>
aSca - crohn's - anca -ve<br>
<hr>
<center>
<img width=600 src="https://www.dropbox.com/s/mi5mjmi0zi5eyev/anemia.png?raw=1">
</center>
{{MicroCytic}}
<hr>
{{NormoCytic}}
{{MacroCytic}}
<center>''ANEMIA''</center>
---
* What are the patient’s vital signs?
* If the patient is not hypotensive or severely tachycardic, blood transfusion is not emergently indicated.
* Is the patient symptomatic?
* In the absence of angina, CHF, syncope, pre-syncope, or hemodynamic compromise, blood transfusion is not emergently indicated.
* Is there evidence of acute or recent blood loss such as hematemesis, melena, or hematochezia?
* If Yes,admit and start protocol
* Is there a history of hematuria or menorrhagia?
* What medications does the patient take?
* On Aspirin/NSAIDs, etc?
* CKD/CLD/Thyroid/other chronic diseases?
* FH of anemia, thalassemia, etc?
* Does the patient have a malignancy?
* Get CBC, peripheral smear
* Anemia may result from decreased production of RBCs, blood loss, or increased destruction of RBCs.
* Pancytopenia: check B12 and folate level
* Look at the MCV first
<center>
<img width=600 src="https://www.dropbox.com/s/mi5mjmi0zi5eyev/anemia.png?raw=1">
</center>
<hr>
<center>''Anemia with a low MCV''</center>
<hr>
* Mostly Fe def anaemia, can be thalassemia
* Order peripheral blood smear, Serum Iron, Ferritin, TIBC
* Hypochromic, microcytic RBCs, target cells, basophilic stippling, marked anisocytosis, and poikilocytosis are seen with thalassemias.
<hr>
<center>''Normal-MCV anemias''</center>
<hr>
* MCC: Anemia of chronic disease
* Chronic infections (tuberculosis, osteomyelitis), collagen vascular diseases, and malignancies. Kidney, liver, thyroid, and adrenal dysfunction
* Correction of the underlying disorder
|!CAUSES OF MICROCYTIC ANEMIA|<|<|<|<|
|!|!Iron Deficiency|!β-Thalassemia|!Chronic Diseases|!Sideroblastic Anemia|
|!Iron| Low | Normal/Increased | Low | Increased |
|!TIBC| Increased | Normal | Low | Normal |
|!Ferritin| Low | Normal/Increased | Normal/Increased | Increased |
|!HbA,,2,,| Normal | Increased | Normal | Normal |
<hr>
<center>''High-MCV anemias''</center>
<hr>
* MCC: Folate and vitamin B12 deficiency
* PBS: hypersegmented neutrophils and nucleated RBCs.
* Other causes: myelodysplasias, aplastic anemias, acquired sideroblastic anemias, post chemo, hypothyroidism and chronic liver disease.
<hr>
<center>''Anemias with increased reticulocytosis''</center>
<hr>
* Acquired or autoimmune hemolytic anemias and congenital hemolytic anemias (sickle cell anemia, thalassemias).
* Telangiectasia, palmar erythema, and jaundice may indicate liver disease.
* Isolated jaundice may point toward hemolysis.
* Excessive bruising and the presence of cytopenias are suggestive of hematologic malignancy.
* Glossitis: iron and B12 deficiency.
* Splenomegaly: associated with hemolysis, thalassemias, chronic leukemias, lymphomas, and occasionally acute leukemias. also portal hypertension secondary to cirrhosis.
* Check stool occult blood for acute or chronic GI blood loss.
* Low Haptoglobin and increased LDH: suggestive of hemolysis.
* Direct and indirect Coombs’ test. These tests may indicate that the hemolysis is immunologic.
* Iron replacement for Fe def anaemia
* B12 & folate replacement in deficiency
* Coombs’-negative hemolytic anemia: DIC, paroxysmal nocturnal hemoglobinuria, or microangiopathic hemolytic anemia (thrombotic thrombocytopenic purpura, hemolytic uremic syndrome).
* A review of the peripheral smear is helpful.
* DIC: Low platelet count, low fibrinogen, and elevated prothrombin time, partial thromboplastin time, and D-dimer or fibrin degradation products as well as schistocytes on the peripheral smear
* Spherocytes: destruction of RBC in spleen
* Hb electrophoresis and review of PBS: thalassemia, sickle cell anemia, or an enzymopathy.
* Hemoglobin electrophoresis and review of the peripheral smear are indicated.
* Enzymopathy?( G6PD, pyruvate kinase).
* Consider paroxysmal nocturnal hemoglobinuria if cause is unclear.
* Anemia of chronic disease. usually a diagnosis of exclusion.
* Erythropoietin Injections In ESRD pts, anemia of chronic disease and chemotherapy-induced anemia.
* Bone marrow aspiration or biopsy in selected cases.
Angina pectoris is caused by myocardial ischemia and usually presents as central chest pain/heaviness/tightness which may radiate to the left arm/shoulder, jaw or neck. `Stable angina` is when myocardial ischemia is produced by exertion and therefore relieves by rest.
This is distinguished from `unstable (crescendo)` which comes on at rest, minimal exertion or is increasing in frequency. `Variant angina` also comes on at rest and `decubitus angina` is precipitated by lying flat.
The management of stable angina comprises lifestyle changes, medication, percutaneous coronary intervention and surgery. NICE produced guidelines in 2011 covering the management of stable angina
Medication
* all patients should receive aspirin and a statin in the absence of any contraindication as secondary prevention
* sublingual glyceryl trinitrate to abort angina attacks
* NICE recommend using either a beta-blocker or a calicum channel blocker first-line based on 'comorbidities, contraindications and the person's preference'
* if a calcium channel blocker is used as monotherapy a rate-limiting one such as verapamil or diltiazem should be used. If used in combination with a beta-blocker then use a long-acting dihydropyridine calcium-channel blocker (e.g. modified-release nifedipine). Remember that beta-blockers should not be prescribed concurrently with verapamil (risk of complete heart block)
* if there is a poor response to initial treatment then medication should be increased to the maximum tolerated dose (e.g. for atenolol 100mg od)
* if a patient is still symptomatic after monotherapy with a beta-blocker add a calcium channel blocker and vice versa
* if a patient is on monotherapy and cannot tolerate the addition of a calcium channel blocker or a beta-blocker then consider one of the following drugs: a long-acting nitrate, ivabradine, nicorandil or ranolazine
* if a patient is taking both a beta-blocker and a calcium-channel blocker then only add a third drug whilst a patient is awaiting assessment for PCI or CABG
;GTNBC NIVARAN
:1st line: GTN - B blocker - C blocker
:2nd line: Long acting NI trate - NIcorandil - IVAbradine - RANolazine
Nitrate tolerance
* many patients who take nitrates develop tolerance and experience reduced efficacy
* the BNF advises that patients who develop tolerance should take the second dose of isosorbide mononitrate after 8 hours, rather than after 12 hours. This allows blood-nitrate levels to fall for 4 hours and maintains effectiveness
* this effect is not seen in patients who take modified release isosorbide mononitrate
```
NICE Clinical Knowledge Summaries state the following:
Monotherapy (when a beta-blocker is contraindicated or not tolerated): expert opinion suggests using a rate-limiting calcium-channel blocker (CCB) (diltiazem or verapamil) in preference to a dihydropyridine CCB. Reasons for this include:
* Rate-limiting CCBs, such as verapamil and diltiazem, have the additional action of decreasing myocardial contractility and heart rate.
* Dihydropyridine CCBs can sometimes cause reflex tachycardia, which may increase angina symptoms, although this is more likely to be a problem with short-acting dihydropyridines than with longer-acting preparations.
Combination therapy
* People taking a beta-blocker: prescribe a dihydropyridine CCB (amlodipine, felodipine, or modified-release nifedipine).
* People not taking a beta-blocker: a rate-limiting CCB may be preferred (see above).
If the person has concomitant heart failure: prescribe amlodipine or felodipine.
```
!!Angiodysplasia
is a vascular deformity of the gastrointestinal tract which predisposes to bleeding and iron deficiency anaemia. There is thought to be an association with aortic stenosis, although this is debated. Angiodysplasia is generally seen in elderly patients
Diagnosis
* colonoscopy
* mesenteric angiography if acutely bleeding
Management
* endoscopic cautery or argon plasma coagulation
* antifibrinolytics e.g. Tranexamic acid
* oestrogens may also be used
Hereditary angioedema is an autosomal dominant condition associated with low plasma levels of the C1 inhibitor (C1-INH) protein. C1-INH is a multifunctional serine protease inhibitor - the probable mechanism behind attacks is uncontrolled release of bradykinin resulting in oedema of tissues.
Investigation
* C1-INH level is low during an attack
* low C2 and C4 levels are seen, even between attacks. Serum C4 is the most reliable and widely used screening tool
Symptoms
* attacks may be proceeded by painful macular rash
* painless, non-pruritic swelling of subcutaneous/submucosal tissues
* may affect upper airways, skin or abdominal organs (can occasionally present as abdominal pain due to visceral oedema)
* urticaria is not usually a feature
Management
* acute: IV C1-inhibitor concentrate, fresh frozen plasma (FFP) if this is not available
* prophylaxis: anabolic steroid Danazol may help
<div id="notecontent">The bony components of the ankle joint include the distal tibia and fibula and the superior aspect of the talus. Their configuration is such that they form a mortise, with the body of the talus acting as the tenon. This arrangement is secured by a number of ligamentous structures: <br><ul><li>The syndesmosis binds the distal tibia and fibula together (another example of a syndesmosis is the distal radio-ulnar joint). It is composed of the anterior inferior tibiofibular ligament (AITFL), posterior inferior tibiofibular ligament (PITFL), interosseous ligament (IOL) and the interosseous membrane.</li><li>The distal fibular is secured to the to the talus by the anterior and posterior talofibular ligaments (ATFL and PTFL) and to the calcaneus by the calcaneofibular ligament. These ligaments are sometimes referred to collectively as the lateral collateral ligaments.</li><li>The distal tibia is secured to the talus by the deltoid ligament, in view of its triangular shape.</li></ul><br>A sprain is a stretching, partial or complete tear of a ligament. In the ankle, this can be divided into high ankle sprains involving the syndesmosis and low ankle sprains involving the lateral collateral ligaments.
<br><br><b>Low ankle sprains</b><br><br>Presentation:<br><ul><li>most common (>90%) with <span id="concept_popover_id_9986" class="concept concept-3-u trigger-link" data-cid="9986" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9986'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating9986' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="The anterior talofibular ligament is the most commonly sprained ligament in inversion injuries of the ankle">injury to the ATFL</span> the most common offender</li><li><span class="concept" data-cid="9836">inversion injury most common mechanism</span></li><li>pain, swelling, tenderness over affected ligaments and sometimes bruising</li><li>patients usually able to weight bear unless severe</li><li>they can be classified as follows</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Grade</th><th>Ligament disruption</th><th>Bruising and swelling</th><th>Pain on weight bearing</th></tr></thead><tbody><tr><td>Grade I (mild)</td><td>Stretch or micro tear</td><td>minimal</td><td>normal</td></tr><tr><td>Grade II (moderate)</td><td>Partial tear</td><td>moderate</td><td>minimal</td></tr><tr><td>Grade III (severe)</td><td>Complete tear</td><td>Severe</td><td>Severe</td></tr></tbody></table></div><br>Investigation:<br><ul><li>Radiographs should be done according to the Ottawa ankle rules as 15% of sprains are associated with a fracture.</li><li>MRI if persistent pain and useful for evaluating perineal tendons.
</li></ul><br>Treatment:<br><ul><li>Non-operative with rest, ice, compression and elevation (the so-called RICE protocol).</li><li>Occasionally a removable orthosis, cast and/or crutches may be required for short-term symptom relief.</li><li>If symptoms fail to settle or there is significant joint instability then an MRI and surgical intervention may be contemplated, but this is rare.</li></ul><br><b>High ankle sprains</b><br><br>Presentation:<br><ul><li>Injuries to the syndesmosis are rare (about 0.5%) and severe.</li><li>The mechanism of injury is usually external rotation of the foot causing the talus to push the fibula laterally.</li><li>Patients frequently find weight-bearing painful in comparison to low ankle sprains.</li><li>Pain when the tibia and fibula are squeezed together at the level of the mid-calf (Hopkin’s squeeze test).</li></ul><br>
Investigations:<br><ul><li>Radiographs may show widening of the tibiofibular joint (diastasis) or ankle mortise.</li><li>MRI if high suspicion of syndesmotic injury, but normal plain films.</li></ul><br>
Treatment:<br><ul><li>If no diastasis then non-weight-bearing orthosis or cast until pain subsides.</li><li>If diastasis or failed non-operative management then operative fixation is usually warranted.</li></ul><br>Isolated injuries to the deltoid ligament are rare as they are frequently associated with a fracture and one should always be on the lookout for Maisonneuve fracture of the proximal fibula. Provided the ankle mortise is anatomically reduced then treatment can be as per a low ankle sprain, if not then reduction and fixation may be warranted.
</div>
---
>EVERsion DEL EVER
*DELtoid injured in EVERsion
>Talofibular in Inversion
---
!!Ankylosing Spondylitis
!!!Ankylosing spondylitis features - the 'A's
* Apical fibrosis
* Anterior uveitis
* Aortic regurgitation
* Achilles tendonitis
* AV node block
* Amyloidosis
Anorexia nervosa is associated with a number of characteristic clinical signs and physiological abnormalities which are summarised below
Features
* reduced body mass index
* bradycardia
* hypotension
* enlarged salivary glands
Physiological abnormalities
* hypokalaemia
* low FSH, LH, oestrogens and testosterone
* raised cortisol and growth hormone
* impaired glucose tolerance
* hypercholesterolaemia
* hypercarotinaemia
* low T3
---
>Stress hormones(GH, Cortisol) ⭢ HyperGlycemia, HyperCholesterolemia
---
| !ANOREXIA |<|
|Vitamin B,,12,,|Inj Neurobion 2 cc IM on alternate days for 5 days|
|Cyproheptadine|Syr Cypon 1 tsp TDS 30 min before meals, 1 wk|
|Albendazole|Tab. Zentel 400 mg once|
|Protein supplements|Powder GRD/Protinex 2 tsp with milk BD, 1 month|
|Liver meds|Tab Liv 52 2 tab TDS, 1 wk|
|Enzymes|Tab Unienzyme 1 tab TDS with meals, 7 days|
|Anabolic Steroids|Inj Decadurabolin 50 IM wkly 4 wks|
<div id="body_content">
NICE issued guidelines on routine care for the healthy pregnant woman in March 2008. They recommend:<br><ul><li>10 antenatal visits in the first pregnancy if uncomplicated</li><li>7 antenatal visits in subsequent pregnancies if uncomplicated</li><li>women do not need to be seen by a consultant if the pregnancy is uncomplicated</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Gestation</b></th><th><b>Purpose of visit</b></th></tr></thead><tbody><tr><td>8 - 12 weeks (ideally < 10 weeks)</td><td><span class="concept" data-cid="8017">Booking visit</span><br><ul><li>general information e.g. diet, alcohol, smoking, folic acid, vitamin D, antenatal classes</li><li>BP, urine dipstick, check BMI</li></ul><span class="concept" data-cid="8018">Booking bloods</span>/urine<br><ul><li>FBC, blood group, rhesus status, red cell alloantibodies, haemoglobinopathies</li><li>hepatitis B, syphilis, rubella</li><li>HIV test is offered to all women</li><li><span class="concept" data-cid="8019">urine culture to detect asymptomatic bacteriuria</span></li></ul></td></tr><tr><td>10 - 13+6 weeks</td><td><span class="concept" data-cid="8020">Early scan to confirm dates</span>, exclude multiple pregnancy</td></tr><tr><td>11 - 13+6 weeks</td><td><span class="concept" data-cid="3058">Down's syndrome screening including nuchal scan</span></td></tr><tr><td>16 weeks</td><td>Information on the anomaly and the blood results. If Hb < 11 g/dl consider iron<br>Routine care: BP and urine dipstick</td></tr><tr><td>18 - 20+6 weeks</td><td><span class="concept" data-cid="3059">Anomaly scan</span></td></tr><tr><td>25 weeks (only if primip)</td><td>Routine care: BP, urine dipstick, symphysis-fundal height (SFH)</td></tr><tr><td>28 weeks</td><td>Routine care: BP, urine dipstick, SFH<br><span class="concept" data-cid="8021">Second screen for anaemia and atypical red cell alloantibodies</span>. If Hb < 10.5 g/dl consider iron<br>First dose of <span class="concept" data-cid="394">anti-D</span> prophylaxis to rhesus negative women</td></tr><tr><td>31 weeks (only if primip)</td><td>Routine care as above</td></tr><tr><td>34 weeks</td><td>Routine care as above<br>Second dose of <span class="concept" data-cid="394">anti-D</span> prophylaxis to rhesus negative women*<br>Information on labour and birth plan</td></tr><tr><td>36 weeks</td><td>Routine care as above<br>Check presentation - <span class="concept" data-cid="8022">offer external cephalic version if indicated</span><br>Information on breast feeding, vitamin K, 'baby-blues'</td></tr><tr><td>38 weeks</td><td>Routine care as above</td></tr><tr><td>40 weeks (only if primip)</td><td>Routine care as above<br>Discussion about options for prolonged pregnancy</td></tr><tr><td>41 weeks</td><td>Routine care as above<br>Discuss labour plans and possibility of induction</td></tr></tbody></table></div><br>*the evidence base suggests that there is little difference in the efficacy of single-dose (at 28 weeks) and double-dose regimes (at 28 & 34 weeks). For this reason the RCOG in 2011 advised that either regime could be used 'depending on local factors'</div>
---
>10±2 All Bloods - All Infections - Counselling
---
>10 - 13+6 Early scan for dates
>11 - 13+6 Down's screen + Scan
>18 - 20+6 Anomaly scan
---
>4th month - INFO about anomalies and blood reports - treat if Hb <11
>7th month - screen and treat if Hb<10.5 - First dose of anti-D (second in 6wks)
>9th month - External Cephalic version - INFO about Breast feeding - Vit K - BabyBlues
!!Anterior uveitis / Iritis
is one of the important differentials of a RedEye. Anterior uveitis describes inflammation of the anterior portion of the uvea - iris and ciliary body. It is associated with HLA-B27 and may be seen in association with other HLA-B27 linked conditions (see below).
;Features
* acute onset
* ocular discomfort & pain (may increase with use)
* `pupil may be irregular and small`
* photophobia (often intense)
* blurred vision
* red eye
* lacrimation
* ciliary flush
* `hypopyon` describes pus and inflammatory cells in the anterior chamber, often resulting in a visible fluid level
* visual acuity initially normal → impaired
;Associated conditions
* AnkylosingSpondylitis
* ReactiveArthritis
* UlcerativeColitis, CrOhn's disease
* BehCet's disease
* SarcoiDosis: bilateral disease may be seen
;Management
* urgent review by ophthalmology
* cycloplegics (dilates the pupil which helps to relieve pain and photophobia) e.g. Atropine, cyclopentolate
* steroid eye drops
---
* AnteriorUveitis cause photophobia - blurred vision - RedEye - irregular/small pupil - hypopyon - ciliary flush
* KeraTitis may mimic AnteriorUveitis but pupillary reaction is normal in KeraTitis
* ConjuctiVitis does not cause photophobia - does not affect pupils
* EpiScleritis does not affect visual acuity
* PosteriorUveitis causes floaters
---
<div id="notecontent">The table below summarises characteristic (if not necessarily the most common) side-effects of drugs used to treat angina<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Side-effect</b></th></tr></thead><tbody><tr><td>Calcium channel blockers</td><td> Headache<br> Flushing<br> Ankle oedema<br><br>Verapamil also commonly causes constipation</td></tr><tr><td>Beta-blockers</td><td> Bronchospasm (especially in asthmatics)<br> Fatigue<br> Cold peripheries<br> Sleep disturbances</td></tr><tr><td>Nitrates</td><td> Headache<br> Postural hypotension<br> Tachycardia</td></tr><tr><td>Nicorandil</td><td> Headache<br> Flushing<br> Anal ulceration</td></tr></tbody></table></div></div>
Based on current BNF guidelines:
!!!Respiratory System
|!Condition|!Recommended treatment|
|Exacerbations of chronic bronchitis|Amoxicillin or tetracycline or clarithromycin|
|Uncomplicated community-acquired pneumonia|Amoxicillin (Doxycycline or clarithromycin in penicillin allergic, add flucloxacillin if staphylococci suspected e.g. In influenza)|
|Pneumonia possibly caused by atypical pathogens|Clarithromycin|
|Hospital-acquired pneumonia|Within 5 days of admission: co-amoxiclav or cefuroxime<br>More than 5 days after admission: piperacillin with tazobactam OR a broad-spectrum cephalosporin (e.g. ceftazidime) OR a quinolone (e.g. ciprofloxacin)|
!!!Urinary tract
|!Condition|!Recommended treatment|
|Lower urinary tract infection|Trimethoprim or nitrofurantoin. Alternative: amoxicillin or cephalosporin|
|Acute pyelonephritis|Broad-spectrum cephalosporin or quinolone|
|Acute prostatitis|Quinolone or trimethoprim|
!!!Skin
|!Condition|!Recommended treatment|
|Impetigo|Topical fusidic acid, oral flucloxacillin or erythromycin if widespread|
|Cellulitis|Flucloxacillin (clarithromycin, erythromycin or doxycycline if penicillin-allergic)|
|Cellulitis (near the eyes or nose)|Co-amoxiclav (clarithromycin, + metronidazole if penicillin-allergic)|
|Erysipelas|Flucloxacillin* (clarithromycin, erythromycin or doxycycline if penicillin-allergic)|
|Animal or human bite|Co-amoxiclav (doxycycline + metronidazole if penicillin-allergic)|
|Mastitis during breast-feeding|Flucloxacillin|
<b>Urinary tract</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Condition</b></th><th><b>Recommended treatment</b></th></tr></thead><tbody><tr><td>Lower urinary tract infection</td><td><span class="concept" data-cid="6116">Trimethoprim or nitrofurantoin</span>. Alternative: amoxicillin or cephalosporin</td></tr><tr><td>Acute pyelonephritis</td><td><span class="concept" data-cid="6119">Broad-spectrum cephalosporin or quinolone</span></td></tr><tr><td>Acute prostatitis</td><td><span class="concept" data-cid="2121">Quinolone or trimethoprim</span></td></tr></tbody></table></div><br><b>Skin</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th><b>Condition</b></th><th><b>Recommended treatment</b></th></tr></thead><tbody><tr><td>Impetigo</td><td><span class="concept" data-cid="325">Topical fusidic acid</span>, oral flucloxacillin or erythromycin if widespread</td></tr><tr><td>Cellulitis</td><td><span class="concept" data-cid="2721">Flucloxacillin</span> (clarithromycin, erythromycin or doxycycline if penicillin-allergic)</td></tr><tr><td>Cellulitis (near the eyes or nose)</td><td><span class="concept" data-cid="10006">Co-amoxiclav</span> (clarithromycin, + metronidazole if penicillin-allergic)</td></tr><tr><td>Erysipelas</td><td><span class="concept" data-cid="6120">Flucloxacillin*</span> (clarithromycin, erythromycin or doxycycline if penicillin-allergic)</td></tr><tr><td>Animal or human bite</td><td><span class="concept" data-cid="149">Co-amoxiclav</span> (doxycycline + metronidazole if penicillin-allergic)</td></tr><tr><td>Mastitis during breast-feeding</td><td>Flucloxacillin</td></tr></tbody></table></div><br><b>Ear, nose & throat</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid4"><thead><tr><th><b>Condition</b></th><th><b>Recommended treatment</b></th></tr></thead><tbody><tr><td>Throat infections</td><td><span class="concept" data-cid="1851">Phenoxymethylpenicillin</span> (erythromycin alone if penicillin-allergic)</td></tr><tr><td>Sinusitis</td><td>Amoxicillin or doxycycline or erythromycin</td></tr><tr><td>Otitis media</td><td><span class="concept" data-cid="6115">Amoxicillin</span> (erythromycin if penicillin-allergic)</td></tr><tr><td>Otitis externa**</td><td><span class="concept" data-cid="6121">Flucloxacillin</span> (erythromycin if penicillin-allergic)</td></tr><tr><td>Periapical or periodontal abscess</td><td><span class="concept" data-cid="6123">Amoxicillin</span></td></tr><tr><td>Gingivitis: acute necrotising ulcerative</td><td><span class="concept" data-cid="6125">Metronidazole</span></td></tr></tbody></table></div><br><b>Genital system</b><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid5"><thead><tr><th><b>Condition</b></th><th><b>Recommended treatment</b></th></tr></thead><tbody><tr><td>Gonorrhoea</td><td><span class="concept" data-cid="646">Intramuscular ceftriaxone</span></td></tr><tr><td><i>Chlamydia</i></td><td><span class="concept" data-cid="262">Doxycycline or azithromycin</span></td></tr><tr><td>Pelvic inflammatory disease</td><td><span class="concept" data-cid="1711">Oral ofloxacin + oral metronidazole or intramuscular ceftriaxone + oral doxycycline + oral metronidazole</span></td></tr><tr><td>Syphilis</td><td><span class="concept" data-cid="6114">Benzathine benzylpenicillin or doxycycline or erythromycin</span></td></tr><tr><td>Bacterial vaginosis</td><td><span class="concept" data-cid="309">Oral or topical metronidazole or topical clindamycin</span></td></tr></tbody></table></div><br><b>Gastrointestinal</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid6"><thead><tr><th><b>Condition</b></th><th><b>Recommended treatment</b></th></tr></thead><tbody><tr><td><i>Clostridium difficile</i></td><td><span class="concept" data-cid="1524">First episode: metronidazole</span><br><span class="concept" data-cid="4516">Second or subsequent episode of infection: vancomycin</span></td></tr><tr><td>Campylobacter enteritis</td><td><span class="concept" data-cid="6122">Clarithromycin</span></td></tr><tr><td>Salmonella (non-typhoid)</td><td><span class="concept" data-cid="6124">Ciprofloxacin</span></td></tr><tr><td>Shigellosis</td><td><span class="concept" data-cid="6125">Ciprofloxacin</span></td></tr></tbody></table></div><br>*phenoxymethylpenicillin was previously the recommended antibiotic until the 2019 NICE guidelines<br><br>**a combined topical antibiotic and corticosteroid is generally used for mild/moderate cases of otitis externa</div>
---
>COPy CAT
*COPD - Clarithromycin-Amoxicillin-Tetracycline
---
>Prostate in between Kidney and Urethra
*Both Quinolone and Trimethroprim can be used for AcuProstatis
---
>FluClox for ALL SKIN infections except NOSY BITES - CLEAR RED DOGS if Pen allergy
*except infection in Dangerous area of face & Bites(CoAmox or Clari + Metro if allergic) - Clarithromycin - Erythromycin and Doxicycline if Penicillin allergy
---
>ENT infections - Amoxicillin
*OtitisMedia - SinuSitis - Periodontal abscess
---
>Three exceptions for ENT - Panti Kinda - Chevi Bayata
*Gingivitis is Anaerobic-Metronidazole
*OtitisExterna is external skin infection - FluClox
*Phenoxymethylpenicillin for Throat
---
>SAFE to GO NOW
*CEFtrioxone for GONOrrhoea
---
>AZITH DOG CLAWS
*AZITHromycin - DOXicycline for CLAmydia
---
>PiD - Oral Oflox+Metro or CEF + Doxi + Metro
---
>VagiNOsis - NO CLUE why GREY FISH in CLEAN METRO GARDENS
*Non pruritic - CLUE cells(epithelial cells coated with Bacteria) - GREY color - FISHY odor - GARDENerella Vaginalis - Treat only patient with Metronidazole/Clindamycin
---
>CLEAR the CAMP
*CLARithromycin for CAMPylobacter
---
!!!<center>''ANTIBIOTICS OF CHOICE''</center>
|!RESPIRATORY INFECTIONS|<|<|
|Acute Bacterial Rhino Sinusitis|Amox-clav 625 mg TDS for 5-7d or <br>Azithromycin 500 mg OD for 5 days|<|
|Influenza|Oseltamivir 75 mg BD for five days|<|
|Pertussis|Azithromycin 500 mg in a single dose on day 1 then 250 mg per day on days 2 through 5|<|
|Community Acquired Pneumonia|Inj. Ceftriaxone 1 g IV q12h or<br>Inj. Amox-clav 1.2 g IV q8h PLUS Azithromycin 500 mg (IV/PO) OD for 5 days|Tab Amox-clav 625 mg TDS PLUS Tab Azithromycin 500 mg OD for 5 day|
|Empyema|Inj Amox-Clav 1.2g IV TDS or<br>Ceftriaxone 1g IV 12th hourly plus Clindamycin 600mg IV TDS <br>Metronidazole 500mg IV QID; Alternative: Piperacillin/Tazobactam 4.5g IV QID|<|
|!GASTROINTESTINAL INFECTIONS|<|<|
|Acute (<14 days) watery diarrhea|Antibiotics are not recommended in most cases.<br>''Exception:'' cholera in outbreak settings, severe disease (fever, >6 stools/day, severe volume depletion), host factors (cardiac disease, immunocompromised, elderly)<br>''Preferred:'' Tablet Azithromycin 1g stat (for cholera) with Tablet Ciprofloxacin 500 mg BD X 3 days (others)<br>''Alternative:'' Tablet Doxycycline 300 mg stat (for cholera) with Tablet Azithromycin 500 mg OD X 3 days (others)|<|
|Acute (< 14 days) Bloody Diarrhea|Tab Ciprofloxacin 500 BD x 3 days <br>''Alternative:'' Tablet Azithromycin 500 mg OD X 3 day or <br>Injection Ceftriaxone 1-2g OD X 5 days or Tablet Cefixime 200 mg BD X 5 days|<|
|Amoebic dysentery|Metro 400 TDS 7-10ds or<br> Tinidazole 2 gm OD 3ds; add Diloxanide 500 mg TDS 10ds|<|
|Giardiasis|Metro 250-500 TDS 7-10 ds or<br> Tini 2 gm STAT|<|
|Cholera|Doxy 300mg STAT or <br>Azithro 1gm STAT or<br>Cipro 500 BD 3ds|<|
|Cholecystitis and cholangitis|Ceftriaxone 1 gm IV q24h or <br>Cipro 400 IV Q12H + Metro 500 IV Q8H|Cipro 500 BD/Augmentin 875 PO BD for 1-2 wks|
|Diverticulitis/Colitis|Ceftriaxone 1 gm IV q24h + Metro 500 IV Q8H; or <br>Cipro 400 IV Q12H + Metro 500 IV Q8H; <br>''Severe:'' Pip/taz 4.5 IV Q8H or <br>Cefoperazone-sulb 3 gm IV q12h or <br>Mero 1gm Q8H|Augmentin 625 TDS 7ds OR Cipro+Metro 7ds|
|Liver abscess|Ceftriaxone 1g IV BD plus Metronidazole 500 mg IV TDS or <br>[Amoxicillin-clavulanate 1.2g IV TDS]|Amoxicillin-clavulanate 625mg TDS] or <br>[Cefixime 200mg BD Plus Metronidazole 400 mg TDS]|
|Pancreatitis Acute|No antibiotics|<|
|Necrotising pancreatitis|Inj Meropenem 1g TDS or <br>Inj Piperacillin-tazobactam 4.5g QID|<|
|Spontaneous bacterial peritonitis|Inj. Cefotaxime 2gm TDS|<|
|Secondary Bacterial Peritonitis|Cipro 400 IV Q12H + Metro 500 IV Q8H;or <br>Piperacillin Tazobactam 4.5g IV q 8 hrs or <br>Cefoperazone + Sulbactam 2 gm IV q12 hrs or <br>Meropenem 1-2g IV q8 hrs|<|
|!SKIN AND SOFT TISSUE INFECTIONS|<|<|
|Impetigo|Topical Mupirocin BD <br>''Alternative:'' Topical Fusidic acid<br>Amoxicillin-clavulanate 625mg TDS <br>''Alternative:'' Cephalexin 250-500 QID or <br>Cefuroxime 250-500 mg BD|<|
|Erysipelas|Inj Cefazolin 1 to 2 g IV q8h or <br>Ceftriaxone 1 to 2 g IV OD or <br>Inj Clindamycin 600 to 900 mg IV q8h|Amoxicillin-clavulanate 625mg TDS for 5-7 days;<br>''Alternative:'' Cephalexin 250-500 QID or <br>Cefuroxime 250-500 mg BD for 5-7 days|
|Nonpurulent cellulitis|Inj Cefazolin 1 to 2 g IV q8h or <br>Ceftriaxone 1 to 2 g IV OD or <br>Inj Clindamycin 600 to 900 mg IV q8h|Augmentin 1 gm BD or <br>Cefadroxil 500 BD or <br>Cephalexin 500 QID or <br>Clindamycin 300-450 QID|
|Purulent cellulitis (no drainable abscess)|Augmentin 1 gm BD or <br>Clindamycin 300-450 mg QID or <br>Ciprofloxacin 500 mg BD or <br>Doxycycline 100 mg BD or <br>Levofloxacin 750 mg OD <br>Bactrim DS BD for MRSA coverage|<|
|Diabetic Foot|''Severe:'' Pip/taz 4.5 g IV Q6H OR Cipro 400 mg IV Q12H PLUS Clinda 600 mg IV Q8H/Metro 500 mg IV/PO TDS|Amox-clav 875 BD or <br>Clinda 300 TDS or <br>Cephalexin 500 QID|
|Perioral or peri rectal abscess|Vancomycin Plus one of: <br>Amp-sulb/Pip-taz/Ceftriaxone + metro/ Cipro + metro/Levoflox + metro|TMP-SMX + Amox-clav or <br>Doxy + Amox-clav or <br>Clinda + Amox-clav <br>Clinda + Cipro|
|Clostridial myonecrosis (gas gangrene)|Inj Pip-taz 4.5 IV q8h PLUS clindamycin 900 mg IV q8h|<|
|Streptococcal TSS|Clindamycin (900 mg IV q8h) PLUS meropenem 1 g IV q8h|<|
|Staphylococcal toxic shock syndrome|Inj Clindamycin 900 mg IV q8h; plus Vancomycin 15 to 20 mg/kg/dose every 8-12 hours, not to exceed 2 g per dose|<|
|''Necrotic soft tissue infection: ''<br>Necrotising fasciitis, Gas gangrene|Meropenem 1g TDS or Piperacillin-tazobactam 4.5 g QID or <br>Cefoperazone sulbactam 3g BD Plus, Vancomycin/ Teicoplanin/ Linezolid) Plus Clindamycin (600-900 mg IV TDS); Urgent surgical debridement|<|
|!ENT|<|<|
|Common cold|Analgesic, antihistamines, no antibiotics|<|
|Acute pharyngitis (bacterial)|Amox 500 TDS 7-10 ds or <br>Azithro 5 day course|<|
|Epiglottitis|Cefotaxime 50 mg/kg IV 8 hourly or <br>ceftriaxone 50 mg/kg IV 24 hourly + clindamycin 7.5 mg/kg IV 6 hourly|<|
|Laryngitis|No Abx|<|
|Oral candidiasis|Fluconazole 200 mg PO 1 dose then 100 mg OD|<|
|Mouth ulcers/vesicles|Clinda 600 TDS 2wks or Augmentin 625 TDS 2 wks|<|
|Herpes gingivostomatitis/ labialis|Acyclovir 400 5 times per day 1 wk|<|
|Deep neck infections|Pip 4.5 Q8H IV 2wks or <br>Clinda 300 TDS 2 wks or <br>Doxy 200 BD 3ds, then 100 BD 11 ds|<|
|Severe dental infections|Pip 4.5 Q8H IV 2wks or <br>Clinda TDS 2 wks or <br>Doxy 200 BD 3ds, then 100 BD 11 ds|<|
|Acute otitis media|Amox 500 mg BD/TDS <br>''Second-line:'' amoxicillin-clavulanate, cefuroxime axetil, or Cefixime or Cefoperazone|<|
|External otitis|''Mild disease:'' Acetic acid 2% and hydrocortisone 1% otic solution<br>''Moderate disease:''Cipro D (ciprofloxacin and dexamethasone) and Cortisporin (neomycin, polymyxin, and hydrocortisone) or Betnesol-N<br>''Severe disease'': Ciprofloxacin 500 mg BD for 7 to 10 days|<|
|Facial cellulitis|Ceftriaxone 1 gm IV Q24H/Taxim 2gm Q6H or <br>Levoflox 750 1-2 wks|<|
|Orbital cellulitis|Ceftriaxone 1 gm IV Q24H/Taxim 2gm Q6H or <br>Levoflox 750 for 7d-6wks|<|
|Mastoiditis|Ceftriaxone 1-2 gm IV q24h 2 wks or <br>Cefotaxim 2gm IV q6h 2 wks|<|
|!OPTHALMOLOGY|<|<|
|Periorbital/Preseptal Cellulitis|Clindamycin 300 mgTDS or <br>Amox 500 TDS or <br>Augmentin 1gm BD or <br>Cefpodoxime 400 BD|<|
|Orbital Cellulitis|Vancomycin + Pip-taz|<|
|!ORTHOPEDICS|<|<|
|Septic arthritis|Inj Cefazolin 2g IV TDS or <br>Inj Ceftriaxone 2g IV OD Plus Inj Vancomycin 1-2g IV BD|<|
|Osteomyelitis|IV- Cefazolin 2g TDS (2) or Ceftriaxone 2g IV OD|Linezolid 600 mg BD +/- Rifampicin (600 mg OD)|
|!CNS|<|<|
|Meningitis|age < 50: Vanc load 25-35 mg/kg then 15-20 mg/kg q8-12h + Ceftriaxone 2gm IV q12h; age > 50: Vanc + Ceftriaxone 2 gm IV q12h + Amp 2gm IV q4h|<|
|Encephalitis|''Empiric:'' Ceftriaxone 2 gm IV BD plus Vancomycin 1-2 gm IV BD + IV Acyclovir 10 mg/kg TDS + Doxycycline 100 mg BD <br>''Japanese encephalitis:'' supportive care <br>''West nile virus encephalitis:'' supportive <br>''Herpes simplex virus type 1 encephalitis:'' acyclovir (10 mg/kg IV Q 8h) for 14 to 21 days|<|
|Brain Abscess|Ceftriaxone 2 gm IV BD plus Vancomycin 1-2 gm IV BD plus Metronidazole 500mg TDS|<|
|!UROGENITAL|<|<|
|Acute uncomplicated cystitis (females)|Nitrofurantoin 100 mg BD for 3-5 days <br>Alt: Bactrim DS BD or <br>Cefixime 400 mg BD for 5-7 days|<|
|Acute uncomplicated cystitis (males)|Ciprofloxacin 500mg BD or <br>Levofloxacin 750 mg OD for 7 days or <br>Nitrofurantoin 100mg BD for 7 ds|<|
|Acute Pyelonephritis, Urosepsis|Ceftriaxone 1g IV Q24H or <br>Levoflox 500 IV q24h 2wks or <br>Amikacin 1g IV/IM OD or <br>Genta 7 mg/kg/d or <br>Pip-Taz 4.5 q8h or <br>Cefoperazone-sulb 3 gm IV q12h or <br>Meropenem 1g TDS for 14 ds|<|
|Complicated UTI / Catheter related|Meropenem 1g TDS for 14 days<br>''Alternative:'' Piperacillin tazobactam 4.5 gm QID for 14 days|<|
|Bacterial prostatitis (acute and chronic)|Ciprofloxacin 500 BD or <br>Levofloxacin 750 OD up to 6 weeks<br>''Alternative:'' TMP-SMX DS BD up to 6 wks|<|
|Asymptomatic bacteriuria|''Indications to treat:'' Pregnancy, before urological procedures, post renal transplant<br>''Preferred:'' Nitrofurantoin 100 mg PO BD for 3-7 days <br>''Alternative:'' Amoxicillin clavulunate 1g BD or <br>Cefixime 400 mg BD for 3-7 days|<|
|!STI|<|<|
|Urethral discharge (Chlamydia/ Gonorrhoea/ Mycoplasma/ Trichomonas)|Tab. Azithromycin 1 gm OD Stat + Tab. Cefixime 400 mg OD Stat|<|
|Cervical discharge|Tab. Azithromycin 1 gm OD Stat + Tab. Cefixime 400 mg OD Stat|<|
|Painful scrotal swelling|Tab. Azithromycin 1 gm OD Stat + Tab. Cefixime 400 mg OD Stat|<|
|Vaginal Discharge|Tab. Secnidazole 2 g OD Stat + Cap. Fluconazole 150 mg OD Stat<br>''Alternative:'' Secnidazole can be replaced with Tinidazole 2g single dose|<|
|Genital ulcer|''Non herpetic (chancre/chancroid): ''<br>Single or multiple, painful or painless/ Burning sensation in the genital area/ Enlarged lymph nodes<br>Inj. Benzathine penicillin (2.4 MU) - 1 vial + Tab. Azithromycin (1 gm) - Single dose; Doxycycline 100 mg (Bid for 15 days) if allergic to penicillin <br>''Herpetic:'' <br>Ulcer or vesicles, single or multiple, painful, recurrent n Burning sensation in the genital area<br>Tab. Acyclovir 400 mg TDS for 7 days; <br>''Alternative:'' Valacyclovir 1,000 mg orally twice daily or <br>Famciclovir 250 mg TDS for 7 days|<|
|Syphilis|Penicillin G benzathine 2.4 million units IM once|''Alternatives (choose one):'' Doxycycline 100 mg BD for 14 days or <br>Ceftriaxone 1 to 2 g daily IM/IV for 10-14 days or <br>Tetracycline 500 mg QID for 14 days or <br>Amoxicillin 3 g plus probenecid 500 mg, both given orally twice daily for 14 days|
|Lower abdominal pain (PID)|Lower Abdominal Pain/ Fever/ Vaginal Discharge/ Menstrual irregularities/ dysparenunia, dysuria, tenesmus/ Lower backache/ Cervical motion tenderness:<br>Inj. Cefotetan 2 g IV every 12 hourly or <br>Inj. Cefoxitin 2 g IV every 6 hour PLUS Tab. Doxycycline 100 mg BD or <br>Inj. Clindamycin 900 mg IV every 8 hours WITH Inj. Gentamicin loading dose IV or IM (2 mg/kg of body weight), followed by a maintenance dose (1.5 mg/kg) every 8 hours|Tab. Cefixime 400 mg OD stat + Tab. Metronidazole 400 mg BD X 14 days + Doxycycline 100 mg BD X 14 days|
|Inguinal bubo (LGV/chancroid)|Tab. Azithromycin 1 gm OD Stat + Tab. Doxycycline 100 mg BD for 21 days|<|
|Epididymitis|Tab Cefixime 400 mg BD for 7 days or <br>Inj. Ceftriaxone 250 mg IM in a single dose PLUS Cap. Doxycycline 100mg BD for 14 days|<|
|!ACUTE FEBRILE ILLNESS|<|<|
|Severe Malaria|Injection Artesunate 2.4 mg/kg IV at 0, 12, 24, 48 hours|Oral ACT (Artemether/ Lumefantrine 80/480 1 tab BD) for 3 days; Primaquine 0.75 mg/kg single dose|
|P. vivax|Injection Artesunate 2.4 mg/kg IV at 0, 12, 24, 48 hours|Chloroquine (500 mg tablet = 300 mg base)- 2 tablets stat, 1 tablet in six hours, 1 tablet once daily for two daysor <br>Primaquine 0.25 mg/kg OD for 14 days|
|Dengue or Chikungunya|No antibiotics needed|<|
|AFI MP -ve, Dengue or Chikungunya -ve|Inj Ceftriaxone 1-2 g IV BD plus Inj /oral doxycycline 100mg BD + Azithromycin 1g OD|<|
|Scrub typhus|Inj /oral doxycycline 100mg BD 7-10 days or <br>Inj / Tab azithromycin 500mg od x 5 days|<|
|Enteric fever|Ceftriaxone 1-2 g IV BD x 10-14 daysor <br>Tablet Cefixime 400mg BD X 10-14 days or <br>Tablet Azithromycin 1g/day x 5 days or <br>Tablet Azithromycin 1g stat followed by 500mg/day for 6 days|<|
|Leptospirosis|Ceftriaxone 1-2 g IV BD x 7 days or <br>Tablet Doxycycline 100 mg BD x 7 days|<|
|!DENTAL|<|<|
|Dental caries|Fluoride-containing toothpaste BD/TDS AND/OR Chlorhexidine oral rinse|<|
|Acute simple gingivitis|Augmentin 1 gm BD or 625 mg TDS|<|
|Acute necrotizing ulcerative gingivitis|Metronidazole 500 mg TDS or <br>Augmentin 1 gm BD or 625 mg TDS|<|
|Periodontitis|Doxycycline 200 mg PO or IV every 12 hours (only in patients eight years of age or older) or <br>Metronidazole 500 mg PO or IV every eight hours|<|
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td>Aminoglycosides</td><td>Binds to 30S subunit causing misreading of mRNA</td><td>Nephrotoxicity, Ototoxicity</td><td></td></tr><tr><td>Tetracyclines</td><td>Binds to 30S subunit blocking binding of aminoacyl-tRNA</td><td>Discolouration of teeth, photosensitivity</td><td></td></tr><tr><td>Chloramphenicol</td><td>Binds to 50S subunit, inhibiting peptidyl transferase</td><td>Aplastic anaemia</td><td></td></tr><tr><td>Clindamycin</td><td>Binds to 50S subunit, inhibiting translocation (movement of tRNA from acceptor site to peptidyl site)</td><td>Common cause of <i>C. difficile</i> diarrhoea</td><td></td></tr><tr><td>Macrolides</td><td>Binds to 50S subunit, inhibiting translocation (movement of tRNA from acceptor site to peptidyl site)</td><td>Nausea (especially erythromycin), P450 inhibitor, prolonged QT interval</td><td>Commonly used for patients who are allergic to penicillin</td></tr></tbody></table></div></div>
<div id="body_content">
The table below outlines the main management for common overdoses:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Toxin</b></th><th><b>Treatment</b></th></tr></thead><tbody><tr><td><b>Paracetamol</b></td><td>Management<br><ul><li>activated charcoal if ingested < 1 hour ago</li><li><span class="concept" data-cid="6307">N-acetylcysteine (NAC)</span></li><li>liver transplantation</li></ul></td></tr><tr><td><b>Salicylate</b></td><td>Management<br><ul><li>urinary alkalinization is now rarely used - it is contraindicated in cerebral and pulmonary oedema with most units now proceeding straight to haemodialysis in cases of severe poisoning</li><li><span class="concept" data-cid="6308">haemodialysis</span></li></ul></td></tr><tr><td><b>Opioid/opiates</b></td><td><span class="concept" data-cid="6309">Naloxone</span></td></tr><tr><td><b>Benzodiazepines</b></td><td><span class="concept" data-cid="4623">Flumazenil</span><br><span class="concept" data-cid="3588">The majority of overdoses are managed with supportive care only due to the risk of seizures with flumazenil</span>. It is generally only used with severe or iatrogenic overdoses.</td></tr><tr><td><b>Tricyclic antidepressants</b></td><td>Management<br><ul><li><span class="concept" data-cid="6311">IV bicarbonate</span> may reduce the risk of seizures and arrhythmias in severe toxicity</li><li>arrhythmias: class 1a (e.g. Quinidine) and class Ic antiarrhythmics (e.g. Flecainide) are contraindicated as they prolong depolarisation. Class III drugs such as amiodarone should also be avoided as they prolong the QT interval. Response to lignocaine is variable and it should be emphasized that correction of acidosis is the first line in management of tricyclic induced arrhythmias</li><li>dialysis is ineffective in removing tricyclics</li></ul></td></tr><tr><td><b>Lithium</b></td><td>Management<br><ul><li>mild-moderate toxicity may respond to volume resuscitation with normal saline</li><li><span class="concept" data-cid="6312">haemodialysis</span> may be needed in severe toxicity</li><li>sodium bicarbonate is sometimes used but there is limited evidence to support this. By increasing the alkalinity of the urine it promotes lithium excretion</li></ul></td></tr><tr><td><b>Warfarin</b></td><td><span class="concept" data-cid="6313">Vitamin K</span>, prothrombin complex</td></tr><tr><td><b>Heparin</b></td><td><span class="concept" data-cid="6314">Protamine sulphate</span></td></tr><tr><td><b>[[Beta-blockers|BetaBlocker Overdose]]</b></td><td>Management<br><ul><li>if bradycardic then <span class="concept" data-cid="6315">atropine</span></li><li>in resistant cases <span class="concept" data-cid="6315">glucagon</span> may be used</li></ul></td></tr><tr><td><b>Ethylene glycol</b></td><td>Management has changed in recent times<br><ul><li><span class="concept" data-cid="6316">ethanol</span> has been used for many years</li><li>works by competing with ethylene glycol for the enzyme alcohol dehydrogenase</li><li>this limits the formation of toxic metabolites (e.g. Glycoaldehyde and glycolic acid) which are responsible for the haemodynamic/metabolic features of poisoning</li><li><span class="concept" data-cid="6316"><b>fomepizole</b></span>, an inhibitor of alcohol dehydrogenase, is now used first-line in preference to ethanol</li><li><span class="concept" data-cid="6316">haemodialysis</span> also has a role in refractory cases</li></ul></td></tr><tr><td><b>Methanol poisoning</b></td><td>Management<br><ul><li><span class="concept" data-cid="6317">fomepizole or ethanol</span></li><li><span class="concept" data-cid="6317">haemodialysis</span></li></ul></td></tr><tr><td><b>Organophosphate insecticides</b></td><td>Management<br><ul><li><span class="concept" data-cid="6318">atropine</span></li><li>the role of pralidoxime is still unclear - meta-analyses to date have failed to show any clear benefit</li></ul></td></tr><tr><td><b>Digoxin</b></td><td>Digoxin-specific antibody fragments</td></tr><tr><td><b>Iron</b></td><td><span class="concept" data-cid="6319">Desferrioxamine</span>, a chelating agent</td></tr><tr><td><b>Lead</b></td><td><span class="concept" data-cid="6320">Dimercaprol, calcium edetate</span></td></tr><tr><td><b>Carbon monoxide</b></td><td>Management<br><ul><li><span class="concept" data-cid="6321">100% oxygen</span></li><li><span class="concept" data-cid="6321">hyperbaric oxygen</span></li></ul></td></tr><tr><td><b>Cyanide</b></td><td><span class="concept" data-cid="6324">Hydroxocobalamin</span>; also combination of <span class="concept" data-cid="6323">amyl nitrite, sodium nitrite, and sodium thiosulfate</span></td></tr></tbody></table></div></div>
---
Ingestion of concentrated ''paraquat'' is associated with nausea, vomiting and diarrhoea. Painful ulceration of the mouth and oesophagus appears after 36-48 hours, with renal failure. Several days later, pulmonary fibrosis may occur. Treat with activated charcoal and with laxative (magnesium sulphate).
---
>OPIN POINT
*Opioid causes PIN POINT pupils
>Benzo DIA zepines
* BZDs cause DILATION of pupils
---
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td>Azoles</td><td><span class="concept" data-cid="9100">Inhibits 14α-demethylase which produces ergosterol</span></td><td><span class="concept" data-cid="6098">P450 inhibition</span><br>Liver toxicity</td><td></td></tr><tr><td>Amphotericin B</td><td><span class="concept" data-cid="2841">Binds with ergosterol forming a transmembrane channel that leads to monovalent ion (K+, Na+, H+ and Cl) leakage</span></td><td><span class="concept" data-cid="5726">Nephrotoxicity</span>, <span class="concept" data-cid="9097">flu-like symptoms</span>, <span class="concept" data-cid="9098">hypokalaemia</span>, <span class="concept" data-cid="9099">hypomagnaseamia</span></td><td>Used for systemic fungal infections</td></tr><tr><td>Terbinafine</td><td><span class="concept" data-cid="2842">Inhibits squalene epoxidase</span></td><td></td><td>Commonly used in oral form to treat fungal nail infections</td></tr><tr><td>Griseofulvin</td><td><span class="concept" data-cid="9101">Interacts with microtubules to disrupt mitotic spindle</span></td><td>Induces P450 system, teratogenic</td><td></td></tr><tr><td>Flucytosine</td><td><span class="concept" data-cid="9104">Converted by cytosine deaminase to 5-fluorouracil, which inhibits thymidylate synthase and disrupts fungal protein synthesis</span></td><td>Vomiting</td><td></td></tr><tr><td>Caspofungin</td><td><span class="concept" data-cid="9102">Inhibits synthesis of beta-glucan, a major fungal cell wall component</span></td><td>Flushing</td><td></td></tr><tr><td>Nystatin</td><td><span class="concept" data-cid="9103">Binds with ergosterol forming a transmembrane channel that leads to monovalent ion (K+, Na+, H+ and Cl) leakage</span></td><td></td><td>As very toxic can only be used topically (e.g. for oral thrush)</td></tr></tbody></table></div></div>
Antihistamines (H1 inhibitors) are of value in the treatment of allergic rhinitis and urticaria.
!!!Sedating antihistamines
* chlorpheniramine
* diphenhydramine
* dimenhydrinate
* hydroxyzine
* As well as being sedating these antihistamines have some antimuscarinic properties (e.g. urinary retention, dry mouth).
>FINE MEN on ZIN are Anti Cool. They SLEEP - EAT - DIZZY all the time
:-1st Gen AntiHistamines (chlorPHENeramine-diPHENhydramine-diMENhydrinate-hydroxyZINe)
:-AntiSerotonin(appetite stimulation)-Anti α-Adrenergic(postural dizzi)- ~AntiCholinergic-Sedative(cross BBB)
:-Contraindicated in co-ordinated tasks like Diving - Driving - Machinery work
!!!Non-sedating antihistamines
* fexofenadine
* cetirizine
* loratidine
Of the non-sedating antihistamines there is some evidence that cetirizine may cause more drowsiness than other drugs in the class.
>FETCH SEAT for LORA
:-FEXofenadine-CETirizine-LORAtidine-desLORAtidine
:-2nd Gen AntiHistamine (No side effects like 1st Gen-Don't cross BBB)
>KANTLO allergy - KETOTIFEN
:non-competitive anti H1 blocker & mast cell stabilizer (com: EpiNASTine-competitive H1 blocker-don't stabilize mast cell)
<div id="notecontent">NICE issued guidelines on routine care for the healthy pregnant woman in March 2008<br><br>Nausea and vomiting<br><ul><li>natural remedies - ginger and acupuncture on the 'p6' point (by the wrist) are recommended by NICE</li><li>antihistamines should be used first-line (BNF suggests promethazine as first-line)</li></ul><br>Vitamin D<br><ul><li>NICE recommend 'All women should be informed at the booking appointment about the importance for their own and their baby's health of maintaining adequate vitamin D stores during pregnancy and whilst breastfeeding'</li><li>'women may choose to take 10 micrograms of vitamin D per day, as found in the Healthy Start multivitamin supplement'. This was confirmed in 2012 when the Chief Medical Officer advised: 'All pregnant and breastfeeding women should take a daily supplement containing 10micrograms of vitamin D, to ensure the mothers requirements for vitamin D are met and to build adequate fetal stores for early infancy'</li><li>particular care should be taken with women at risk (e.g. Asian, obese, poor diet)</li></ul><br>Alcohol<br><ul><li>in 2016 the Chief Medical Officer proposed new guidelines in relation to the safe consumption of alcohol following an expert group report. </li><li>the government now recommend pregnant women should not drink. The wording of the official advice is 'If you are pregnant or planning a pregnancy, the safest approach is not to drink alcohol at all, to keep risks to your baby to a minimum. Drinking in pregnancy can lead to long-term harm to the baby, with the more you drink the greater the risk.'</li></ul></div>
<div id="notecontent">Antiphospholipid syndrome is an acquired disorder characterised by a predisposition to both venous and arterial thromboses, recurrent fetal loss and thrombocytopenia. It may occur as a primary disorder or secondary to other conditions, most commonly systemic lupus erythematosus (SLE)<br><br>A key point for the exam is to appreciate that antiphospholipid syndrome causes a paradoxical rise in the APTT. This is due to an ex-vivo reaction of the lupus anticoagulant autoantibodies with phospholipids involved in the coagulation cascade<br><br>Features<br><ul><li>venous/arterial thrombosis</li><li>recurrent fetal loss</li><li>livedo reticularis</li><li>thrombocytopenia</li><li>prolonged APTT</li><li>other features: pre-eclampsia, pulmonary hypertension</li></ul><br>Associations other than SLE<br><ul><li>other autoimmune disorders</li><li>lymphoproliferative disorders</li><li>phenothiazines (rare)</li></ul><br>Management - based on BCSH guidelines<br><ul><li>initial venous thromboembolic events: evidence currently supports use of warfarin with a target INR of 2-3 for 6 months</li><li>recurrent venous thromboembolic events: lifelong warfarin; if occurred whilst taking warfarin then increase target INR to 3-4</li><li>arterial thrombosis should be treated with lifelong warfarin with target INR 2-3</li></ul></div>
` increase the target INR to 3-4 if a patient has had a further thrombosis with an INR of 2-3`
---
>FETUS DIE - MOM DO LIVE
*ABORTION - MOM LIVEDOreticularis
---
<div id="body_content">
The table below summarises the most recent guidelines regarding antiplatelets:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Diagnosis</b></th><th><b>1st line</b></th><th><b>2nd line</b></th></tr></thead><tbody><tr><td>Acute coronary syndrome (medically treated)</td><td> <span class="concept" data-cid="7534">Aspirin (lifelong) & ticagrelor (12 months)</span></td><td> If aspirin contraindicated, clopidogrel (lifelong)</td></tr><tr><td>Percutaneous coronary intervention</td><td><span class="concept" data-cid="6873">Aspirin (lifelong) & prasurgrel or ticagrelor (12 months)</span></td><td> If aspirin contraindicated, clopidogrel (lifelong)</td></tr><tr><td>TIA </td><td><span class="concept" data-cid="6880">Clopidogrel (lifelong)</span> </td><td><span class="concept" data-cid="6881">Aspirin (lifelong) & dipyridamole (lifelong)</span></td></tr><tr><td>Ischaemic stroke</td><td><span class="concept" data-cid="6874">Clopidogrel (lifelong)</span> </td><td><span class="concept" data-cid="6878">Aspirin (lifelong) & dipyridamole (lifelong)</span></td></tr><tr><td>Peripheral arterial disease</td><td><span class="concept" data-cid="6875">Clopidogrel (lifelong)</span></td><td> <span class="concept" data-cid="6879">Asprin (lifelong)</span></td></tr></tbody></table></div></div>
---
>Clopidogrel is Single always
---
>PERcutaneous PRAsurgrel
<div id="body_content">
Antipsychotics act as dopamine D2 receptor antagonists, blocking dopaminergic transmission in the mesolimbic pathways. <span class="concept" data-cid="9338">Conventional antipsychotics are associated with problematic extrapyramidal side-effects which has led to the development of atypical antipsychotics</span> such as clozapine<br><br>Extrapyramidal side-effects (EPSEs)<br><ul><li><span class="concept" data-cid="6150">Parkinsonism</span></li><li><span class="concept" data-cid="5396">acute dystonia</span>: <span class="concept" data-cid="8951">sustained muscle contraction</span> (e.g. <span class="concept" data-cid="6151">torticollis</span>, <span class="concept" data-cid="10021">oculogyric crisis</span>)</li><li><span class="concept" data-cid="4098">akathisia (severe restlessness)</span></li><li><span class="concept" data-cid="6154">tardive dyskinesia</span> (<span class="concept" data-cid="3601">late onset</span> of choreoathetoid movements, abnormal, involuntary, may occur in 40% of patients, <span class="concept" data-cid="9337">may be irreversible</span>, most common is <span class="concept" data-cid="8953">chewing and pouting of jaw</span>)</li><li><span class="concept" data-cid="9335">EPSEs may be managed with procyclidine</span></li></ul><br>The Medicines and Healthcare products Regulatory Agency has issued specific warnings when antipsychotics are used in elderly patients:<br><ul><li><span class="concept" data-cid="661">increased risk of stroke</span></li><li><span class="concept" data-cid="661">increased risk of venous thromboembolism</span></li></ul><br>Other side-effects<br><ul><li>antimuscarinic: <span class="concept" data-cid="6157">dry mouth</span>, <span class="concept" data-cid="6158">blurred vision</span>, <span class="concept" data-cid="6159">urinary retention</span>, <span class="concept" data-cid="6160">constipation</span></li><li>sedation, <span class="concept" data-cid="6162">weight gain</span></li><li><span class="concept" data-cid="6163">raised prolactin</span><ul><li>may result in galactorrhoea</li><li><span class="concept" data-cid="10254">due to inhibition of the dopaminergic tuberoinfundibular pathway</span></li></ul></li><li><span class="concept" data-cid="9512">impaired glucose tolerance</span></li><li><span class="concept" data-cid="6164">neuroleptic malignant syndrome</span>: pyrexia, muscle stiffness</li><li><span class="concept" data-cid="6165">reduced seizure threshold</span> (greater with atypicals)</li><li><span class="concept" data-cid="6170">prolonged QT interval</span> (particularly haloperidol)</li></ul></div>
---
>FIRST NIGHT in PARK is DHADA VANUKU VADA FEVER
*FIRST NIGHT(Paalu...) in PARKinsonism causes Palpitations(CCC), Tremors(akathisia), VADAdebba(Stroke, VTE), FEVER(NMS Fever)
---
>Paalu-Pallu-Nidra-Wt Gain: Prolactinemia-Impaired Glucose Tolerance-Sedation-Wt Gain
>Extrapyramidal: PARKinsonism-Dystonia-Weekathisia-Tardive dyskinesia
>CCC - Cardiac(prolonged QT) - CNS(reduced seizure threshold) - AntiCool
>NMS Fever
>Stroke,VTE
---
{{AtypicalAntiPsychotics}}
!!!Features
* `Soft S1 + Soft eARly diastolic murmur` is best heard in the aortic area with the patient sitting forward and on expiration. Intensity of the murmur is increased by the handgrip manoeuvre (contrast to AorticStenosis)
* collapsing pulse
* wide pulse pressure
* Quincke's sign (nailbed pulsation)
* De Musset's sign (head bobbing)
* If the aortic valve collapses and becomes completely incompetent a sound like the "cooing of a dove" is heard, this would require urgent valve replacement.
* mid-diastolic Austin-Flint murmur in severe AR - due to partial closure of the anterior mitral valve cusps caused by the regurgitation streams
!!!Causes (due to valve disease)
* rheumatic fever
* infective endocarditis
* connective tissue diseases e.g. RA/SLE
* bicuspid aortic valve
!!!Causes (due to aortic root disease)
* aortic dissection
* spondylarthropathies (e.g. ankylosing spondylitis)
* hypertension
* syphilis
* MarFan's, Ehler-Danlos syndrome
!!Aortic Stenosis
;Clinical features of symptomatic disease
* chest pain
* dyspnoea
* syncope
* most often asymptomatic
* An ejection systolic murmur (ESM) is classically seen in aortic stenosis and radiates to the carotids unlike HOCM and decreases with Valsalva
* Another distinguishing feature is an increase in the aortic stenotic murmur with squatting and a decrease with standing, Valsalva manoeuvre and isometric exercises
;Pressure relieved by opening VALVE
:Harsh ESM in Aortic Stenosis becomes less with Valsalva
!!!Features of severe aortic stenosis
* narrow pulse pressure
* slow rising pulse
* delayed ESM
* soft/absent S2
* S4
* thrill
* duration of murmur
* left ventricular hypertrophy or failure
!!!Causes of aortic stenosis
* degenerative calcification (most common cause in older patients > 65 years) in the developed world.
* bicuspid aortic valve (most common cause in younger patients < 65 years)
* [[William's syndrome|PediatricSyndromes]] (supravalvular aortic stenosis)
* post-rheumatic disease
* subvalvular: HOCM
!!!Management
* if asymptomatic then observe the patient is general rule
* `if symptomatic then valve replacement`
* if `asymptomatic but valvular gradient > 40 mmHg` and with features such as left ventricular systolic dysfunction then consider surgery
* cardiovascular disease may coexist. For this reason an angiogram is often done prior to surgery so that the procedures can be combined
* balloon valvuloplasty is limited to patients with critical aortic stenosis who are not fit for valve replacement
Aortic stenosis accounts for 5% of congenital heart disease
!!!Associations
* [[William's syndrome|PediatricSyndromes]] (causes supravalvular aortic stenosis)
* coarctation of the aorta
* TurNer's syndrome
!!!Management
* aim is to avoid or delay valve replacement if possible
* if gradient across valve is > 60 mmHg then balloon valvotomy may be indicated
<div id="notecontent">The Apgar score is used to assess the health of a newborn baby<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Score</b></th><th><b>Pulse</b></th><th><b>Respiratory effort</b></th><th><b>Colour</b></th><th><b>Muscle tone</b></th><th><b>Reflex irritability</b></th></tr></thead><tbody><tr><td> 2</td><td>> 100</td><td>Strong, crying</td><td>Pink</td><td>Active movement</td><td>Cries on stimulation/sneezes, coughs</td></tr><tr><td> 1</td><td>< 100</td><td>Weak, irregular</td><td>Body pink, extremities blue</td><td>Limb flexion</td><td>Grimace</td></tr><tr><td> 0</td><td>Absent</td><td>Nil</td><td>Blue all over</td><td>Flaccid</td><td>Nil</td></tr></tbody></table></div><br>A score of 0-3 is very low score, between 4-6 is moderate low and between 7 - 10 means the baby is in a good state</div>
<div id="body_content">
The table below lists the major types of aphasia. Remember that dysarthria is different and refers to a motor speech disorder.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Type of aphasia</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="1128">Wernicke's (receptive) aphasia</span></td><td>Due to a lesion of the <span class="concept" data-cid="4340">superior temporal gyrus</span>. It is typically supplied by the inferior division of the <span class="concept" data-cid="8758">left MCA</span> <br><br>This area 'forms' the speech before 'sending it' to Broca's area. Lesions result in sentences that make no sense, word substitution and neologisms but speech remains fluent<br><br>Comprehension is impaired</td></tr><tr><td><span class="concept" data-cid="1130">Broca's (expressive) aphasia</span></td><td>Due to a <span class="concept" data-cid="9938">lesion of the inferior frontal gyrus</span>. It is typically supplied by the superior division of the <span class="concept" data-cid="8759">left MCA</span> <br><br>Speech is non-fluent, laboured, and halting<br><br>Comprehension is normal</td></tr><tr><td><span class="concept" data-cid="1129">Conduction aphasia</span></td><td><span class="concept" data-cid="9941">Classically due to a stroke affecting the arcuate fasiculus - the connection between Wernicke's and Broca's area</span><br><br>Speech is fluent but repetition is poor. Aware of the errors they are making<br><br>Comprehension is normal</td></tr><tr><td>Global aphasia</td><td>Large lesion affecting all 3 of the above areas resulting in severe expressive and receptive aphasia</td></tr></tbody></table></div></div>
---
>Broca - BASAL(Inferior frontal gyrus) in location - supplied by SUPERIOR division of left MCA - BOLNE mein problem - laboured halting speech
>Wernick-SupTem - Fluent errors - No comprehension
>Conduction - Poor repetition - Aware
>Global is all of the above - severe impairment of all
>Dysarthria - slurred speech
Aphonia describes the inability to speak. Causes include:
* Recurrent laryngeal nerve palsy (e.g. Post-thyroidectomy).
** Gradual onset aphonia in elderly should raise suspicion of thyroid carcinoma.
** Recurrent laryngeal nerves can be damaged by the local invasion of tumours.
* Psychogenic aphonia is usually sudden-onset.
Angiotensin II receptor blockers are generally used in situations where patients have not tolerated an ACE inhibitor, usually due to the development of a cough.
Examples
* candesartan
* losartan
* irbesartan
Like ACE inhibitors they should be used with caution in patients with renovascular disease. Side-effects include hypotension and hyperkalaemia.
Mechanism
* block effects of angiotensin II at the AT1 receptor
Evidence base
* shown to reduce progression of renal disease in patients with diabetic nephropathy
* evidence base that losartan reduces CVA and IHD mortality in hypertensive patients
Argyll-Robertson pupil is one of the classic pupillary syndrome. It is sometimes seen in neurosyphilis. A mnemonic used for the Argyll-Robertson Pupil (ARP) is Accommodation Reflex Present (ARP) but Pupillary Reflex Absent (PRA)
Features
* small, irregular pupils
* no response to light but there is a response to accommodate
Causes
* diabetes mellitus
* syphilis
!!!<center>''IRREGULAR PULSE''</center>
<hr>
//A 77-year-old man with mental status changes is reported to have an irregular pulse//
* Immediate Questions
* What is the patient’s heart rate?
* What are the patient’s other vital signs? SBP<90 is an urgent situation.
* Has the patient been noted to have an irregular pulse before?
* Is there any history of previous cardiac disease?
* A history of mitral stenosis hints to atrial fibrillation related to left atrial enlargement, whereas a history of previous(MI) or HTN with left ventricular hypertrophy or dilated cardiomyopathy suggests ventricular arrhythmias.
* What medication is the patient taking? Ask specifically about medications (eg, digoxin, antiarrhythmic agents, diuretics, Deriphylline and tricyclic antidepressants
* ''PACs'': history of tobacco, alcohol?
* ''PVCs'': MI, hypoxemia, metabolic or respiratory acidosis or alkalosis, hypokalemia, and hypomagnesemia, Cardiomyopathies
* ''Sinus arrhythmia''. Sinus arrhythmia occurs in almost every age group and is usually a normal variant.
* ''Atrial fibrillation''. can be seen in patients with apparently normal hearts. Or, in patients with RHD, Acute MI, myocarditis, pericarditis, hypertrophic and dilated cardiomyopathies, hypertensive heart disease, acute alcohol intoxication, pulmonary embolism, and thyrotoxicosis. The resting ventricular response is usually between 100 and 160 bpm. It may, however, be < 100 bpm in the presence of AV node disease or certain medications.
* ''Atrial flutter''. The pulse may be irregular if the AV node conduction varies; however, the pulse during atrial flutter is frequently rapid and usually regular.
* ''Second-degree AV block''. Both Mobitz type I (Wenckebach) and Mobitz type II second-degree
* Second-degree heart block can be seen with acute MI, degenerative disease of the cardiac conduction system, viral myocarditis, acute rheumatic fever, and Lyme disease.
* Palpate the brachial or carotid pulses to determine the heart rate and assess the degree of cardiac irregularity.
* Prompt action must be taken if hypotension is present.
* A fever may suggest an infection, which can have associated PVCs or PACs.
* Rule out hypokalemia.
* A low serum bicarbonate suggests metabolic acidosis.
* Get ABG to exclude hypoxemia and severe acidemia or alkalemia.
* Get ECG
* Many of the cardiac arrhythmias that result in a detectably irregular pulse do not need emergent therapy; however, they should be identified and predisposing conditions treated appropriately.
* Possible exceptions to this statement include the following:
# Frequent or multifocal PVCs after an MI or with impaired left ventricular function.
#* Be sure to exclude predisposing conditions, such as hypokalemia, hypoxemia, hypomagnesemia, acidosis, alkalosis, and myocardial ischemia.
#* Beta-blockers are the agents of choice
# Mobitz type II second-degree AV block. This condition frequently progresses to third-degree heart block; therefore, exclusion of reversible causes and placement of a temporary transvenous pacemaker should be considered.
# Atrial fibrillation and flutter. Refer to protocol
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Osteoarthritis</b></th><th><b>Rheumatoid arthritis</b></th></tr></thead><tbody><tr><td><b>Aetiology</b></td><td><span class="concept" data-cid="6544">Mechanical - wear & tear</span>*<br><ul><li>localised loss of cartilage</li><li>remodelling of adjacent bone</li><li>associated inflammation</li></ul></td><td><span class="concept" data-cid="6545">Autoimmune</span></td></tr><tr><td><b>Gender</b></td><td><span class="concept" data-cid="6546">Similar incidence in men and women</span></td><td><span class="concept" data-cid="6547">More common in women</span></td></tr><tr><td><b>Age</b></td><td><span class="concept" data-cid="6548">Seen most commonly in the elderly</span></td><td><span class="concept" data-cid="6549">Seen in adults of all ages</span></td></tr><tr><td><b>Typical affected joints</b></td><td><span class="concept" data-cid="6550">Large weight-bearing joints</span> (hip, knee)<br><span class="concept" data-cid="6551">Carpometacarpal joint</span><br><span class="concept" data-cid="6552">DIP, PIP joints</span></td><td><span class="concept" data-cid="6553">MCP, PIP joints</span></td></tr><tr><td><b>Typical history</b></td><td><span class="concept" data-cid="6554">Pain following use</span>, improves with rest<br><span class="concept" data-cid="6555">Unilateral symptoms</span><br><span class="concept" data-cid="6556">No systemic upset</span></td><td><span class="concept" data-cid="6557">Morning stiffness</span>, improves with use<br><span class="concept" data-cid="6558">Bilateral symptoms</span><br><span class="concept" data-cid="6559">Systemic upset</span></td></tr><tr><td><b>X-ray findings</b></td><td>Loss of joint space<br><span class="concept" data-cid="6560">Subchondral sclerosis</span><br><span class="concept" data-cid="6561">Subchondral cysts</span> <br><span class="concept" data-cid="6562">Osteophytes forming at joint margins</span></td><td>Loss of joint space<br><span class="concept" data-cid="6563">Juxta-articular osteoporosis</span><br><span class="concept" data-cid="6564">Periarticular erosions</span><br><span class="concept" data-cid="6565">Subluxation</span></td></tr></tbody></table></div><br>*it is sometimes better to use the term 'wear & repair' to patients</div>
---
>OsteoPorosis CARTILAGE: subCHONDRAL changes, OSTEOphytes
>[[RA]] JOINT: periARTICULAR changes, subluxation
---
!!!<center>''ARTHROPOD-BORNE ENCEPHALITIS''</center>
<hr>
* ''Japanese encephalitis:'' supportive care with emphasis on control of intracranial pressure, maintenance of adequate cerebral perfusion pressure, seizure control, and prevention of secondary complications
* ''West nile virus encephalitis:'' supportive
* ''Herpes simplex virus type 1 encephalitis:'' Acyclovir (10 mg/kg IV Q 8h) for 14 to 21 days
!!Arrhythmogenic right ventricular cardiomyopathy
(ARVC, also known as arrhythmogenic right ventricular dysplasia or ARVD) is a form of inherited cardiovascular disease which may present with syncope or sudden cardiac death. It is generally regarded as the second most common cause of sudden cardiac death in the young after hypertrophic cardiomyopathy.
Pathophysiology
* inherited in an autosomal dominant pattern with variable expression
* the right ventricular myocardium is replaced by fatty and fibrofatty tissue
* around 50% of patients have a mutation of one of the several genes which encode components of desmosome
Presentation
* palpitations
* syncope
* sudden cardiac death
Investigation
* ECG abnormalities in V1-3, typically T wave inversion. An epsilon wave is found in about 50% of those with ARV - this is best described as a terminal notch in the QRS complex
* echo changes are often subtle in the early stages but may show an enlarged, hypokinetic right ventricle with a thin free wall
* magnetic resonance imaging is useful to show fibrofatty tissue
Management
* drugs: sotalol is the most widely used antiarrhythmic
* catheter ablation to prevent ventricular tachycardia
* implantable cardioverter-defibrillator
Naxos disease
* an autosomal recessive variant of ARVC
* a triad of ARVC, palmoplantar keratosis, and woolly hair
Asbestos can cause a variety of lung disease from benign pleural plaques to mesothelioma.
;Pleural plaques
Pleural plaques are benign and do not undergo malignant change. They are the most common form of asbestos related lung disease and generally occur after a latent period of 20-40 years.
;Pleural thickening
Asbestos exposure may cause diffuse pleural thickening in a similar pattern to that seen following an empyema or haemothorax. The underlying pathophysiology is not fully understood.
;Asbestosis
The severity of asbestosis is related to the length of exposure. This is in contrast to mesothelioma where even very limited exposure can cause disease. The latent period is typically 15-30 years. Asbestosis typically causes lower lobe fibrosis. As with other forms of lung fibrosis the most common symptoms are shortness-of-breath and reduced exercise tolerance.
;Mesothelioma
Mesothelioma is a malignant disease of the pleura. Crocidolite (blue) asbestos is the most dangerous form.
Possible features
* progressive shortness-of-breath
* chest pain
* pleural effusion
Patients are usually offered palliative chemotherapy and there is also a limited role for surgery and radiotherapy. Unfortunately the prognosis is very poor, with a median survival from diagnosis of 8-14 months.
;Lung cancer
Asbestos exposure is a risk factor for lung cancer and also has a synergistic effect with cigarette smoke.
!!!<center>''ASCITES-CIRRHOSIS PROTOCOL''</center>
<hr>
* CBC, KFT, LFT, PT/INR, USG abd, Viral markers
* O2 is sats<92
* Potassium replacement if needed
* Low Na intake (1–2 g/d) in all
* Free H2O restriction only if Na 125
* Inj Lasix 20 mg IV STAT then q8h
* Tab Aldactone 50 mg BD if normal Cr
* Ascites tap remove 2 Lt
* Send ascitic fluid to lab
* Inj Albumin 100 ml IV STAT
* Inj Cefaxone 1 gm IV q12
* ''Variceal bleeding''
* Inj Terlipressin 2 mg q4h, OR 2 mg STAT then 1 mg q4h if wt <50 kg
* Inj OCTRIDE IV 50 mcg bolus then infusion of 25-50 mcg/hour for 2-5 days; may repeat bolus in first hour if hemorrhage not controlled
* Heart patient, use Octreotide
* ''Hepatic encephalopathy: ''
* CT head to rule out other causes
* Inj NS bolus if BP low, then 100 ml/hr
* No Sedatives or tranquilizers
* Inj 25% Dextrose if Hypoglycemia
* Agitation: restrains, Serenace, careful benzos
* Hypokalemia: KCl 40 meq IV pass in 4 hrs
* Inj Monocef 1 gm IV q12h
* R/o variceal bleed
* Tab Inderal 10 mg TDS at discharge
* Syr Duphalac 30 to 60 mL BD/QID so that patients passed 2-3 soft stools/day or Lactulose enema
* Dietary protein reduction
* Rifamixin 400 TDS/550 BD,
* Probiotics and prebiotics
* Acarbose 25 mg TDS
* Inj Hepamerz 1 amp in drip IV q6h (20 g infusion per day given over four hours)
* Branched-chain amino acids infusion
* ''Coagulation abnormalities: ''
* Inj Vitamin K SC OD
* FFP 10-15 ml/kg if INR>1.5
* Platelet transfusion if active bleed or plt < 50K
* Inj Tranexa 10 mg/kg loading dose, rept 3-4/d for 2-8 days.
* Hyponatremia: Fluid restriction if Na <120, Tolvaptan 15mg BD, 3% NS correction
* ''HRS: ''
* Inj Octride 100-200 mic gm sc TDS
* Norepinephrine drip
* Albumin infusion
* Dialysis
| !ASCITES WITH PORTAL HYPERTENSION DRUGS |<|
|Protein supplements|Powder Protinex 2 tsp with milk BD, 1 month|
|Furosemide|Tab Lasix 40 mg OD|
|Spironolactone|Tab Aldactone 100 mg OD|
|Lasix+<br>Spironolactone|Tab Lasilactone BD|
|Torsemide+<br>Spironolactone|Tab Dytor Plus 10 mg OD, 1 wk|
|Potassium chloride|Syr Potklor 1 tsp TDS, 1 wk|
|Liver meds|Tab Liv 52 2 tab TDS, 2 wks<br>Cap Essentiale 175 2 cap TDS, 1 wk<br>Tab Silybon 1 tab TDS, 2 wks|
|Albumin|Inj Human albumin 20% 50 ml daily for 3 days|
!!!<center>''ASPIRATION''</center>
<hr>
//Scenario: After a generalized seizure, a patient is observed to vomit and subsequently develops acute respiratory distress//
* Immediate Questions
* What are the vital signs?
* Is the patient able to communicate?
* Is the patient cyanotic?
* Intubate if cyanotic
* Does the patient need to be repositioned?
* Place in a lateral decubitus position with the head down.
* Why did the patient aspirate?
* Reduced consciousness, impaired swallowing, and esophageal dysfunction.?
* Reduced consciousness: poor GCS, anesthesia, alcoholic, seizure, acute CVA, cardiopulmonary arrest, and drug overdose.
* Esophageal dysfunction: esophageal neoplasm or stricture, hiatal hernia, and nasogastric intubation?
* Impaired swallowing: CVA, myasthenia gravis, Parkinson’s disease, an artificial airway, advanced age with impaired esophageal motility, or cancer involving the head and neck.
* Check dentition for loose or missing teeth and evidence of gingivitis.
* Examine for evidence of tumor involving the oropharynx.
* Wheezing and crackles can occur after aspiration of gastric contents.
* Assess GCS
* Get ABG, CXR
* Send CBC, CXR
* Infiltrates may not be seen immediately after aspiration; therefore, if the initial chest x-ray is normal but there is a strong clinical suspicion of aspiration, repeat the chest x-ray in 4–5 hours.
* O2 support to maintain sats>90
* Intubation and BIPAP if needed
* Duolin nebs for bronchospasm.
* Start abx
* Fiberoptic bronchoscopy if lobar or segmental collapse is present, when foreign body aspiration is suspected, or when abscess drainage is required.
Aspirin works by blocking the action of both cyclooxygenase-1 and 2. Cyclooxygenase is responsible for prostaglandin, prostacyclin and thromboxane synthesis. The blocking of thromboxane A2 formation in platelets reduces the ability of platelets to aggregate which has lead to the widespread use of low-dose aspirin in cardiovascular disease. Until recent guidelines changed all patients with established cardiovascular disease took aspirin if there was no contraindication. Following the 2010 technology appraisal of clopidogrel this is no longer the case*.
Two recent trials (the Aspirin for Asymptomatic Atherosclerosis and the Antithrombotic Trialists Collaboration) have cast doubt on the use of aspirin in primary prevention of cardiovascular disease. Guidelines have not yet changed to reflect this. However the Medicines and Healthcare products Regulatory Agency (MHRA) issued a drug safety update in January 2010 reminding prescribers that aspirin is not licensed for primary prevention.
What do the current guidelines recommend?
* first-line for patients with ischaemic heart disease
Potentiates
* oral hypoglycaemics
* warfarin
* steroids
Aspirin should not be used in children under 16 due to the risk of ReYe's syndrome. An exception is Kawasaki disease, where the benefits are thought to outweigh the risks.
*NICE now recommend clopidogrel first-line following an ischaemic stroke and for peripheral arterial disease. For TIAs the situation is more complex. Recent Royal College of Physician (RCP) guidelines support the use of clopidogrel in TIAs. However the older NICE guidelines still recommend aspirin + dipyridamole - a position the RCP state is 'illogical'
<div id="notecontent">Aspirin works by blocking the action of both <span class="concept" data-cid="8980">cyclooxygenase-1 and 2</span>. Cyclooxygenase is responsible for prostaglandin, prostacyclin and thromboxane synthesis. The blocking of thromboxane A2 formation in platelets reduces the ability of platelets to aggregate which has lead to the widespread use of low-dose aspirin in cardiovascular disease. Until recent guidelines changed all patients with established cardiovascular disease took aspirin if there was no contraindication. Following the 2010 technology appraisal of clopidogrel this is no longer the case*.<br><br>Two recent trials (the Aspirin for Asymptomatic Atherosclerosis and the Antithrombotic Trialists Collaboration) have cast doubt on the use of aspirin in primary prevention of cardiovascular disease. Guidelines have not yet changed to reflect this. However the Medicines and Healthcare products Regulatory Agency (MHRA) issued a drug safety update in January 2010 reminding prescribers that aspirin is not licensed for primary prevention.<br><br>What do the <i>current</i> guidelines recommend?<br><ul><li>first-line for patients with ischaemic heart disease</li></ul><br>Potentiates<br><ul><li>oral hypoglycaemics</li><li>warfarin</li><li>steroids</li></ul><br>Aspirin should not be used in children under 16 due to the risk of <span class="concept" data-cid="2131">Reye's syndrome</span>. An exception is Kawasaki disease, where the benefits are thought to outweigh the risks.<br><br><br>*NICE now recommend clopidogrel first-line following an ischaemic stroke and for peripheral arterial disease. For TIAs the situation is more complex. Recent Royal College of Physician (RCP) guidelines support the use of clopidogrel in TIAs. However the older NICE guidelines still recommend aspirin + dipyridamole - a position the RCP state is 'illogical'</div>
<div id="notecontent">The 2016 BTS/SIGN guidelines suggest the following criteria are used to assess the severity of asthma in general practice:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Severe attack</b></th><th><b>Life-threatening attack</b></th></tr></thead><tbody><tr><td>SpO2 < 92%<br>PEF 33-50% best or predicted<br>Too breathless to talk or feed<br>Heart rate<br><ul><li>>125 (>5 years)</li><li>>140 (1-5 years)</li></ul>Respiratory rate <br><ul><li>>30 breaths/min (>5 years)</li><li>>40 (1-5 years)</li></ul>Use of accessory neck muscles <br></td><td><span class="concept" data-cid="4132">SpO2 <92%</span><br>PEF <33% best or predicted<br><span class="concept" data-cid="3948">Silent chest</span><br>Poor respiratory effort<br>Agitation<br>Altered consciousness<br>Cyanosis</td></tr></tbody></table></div></div>
<div id="notecontent">NICE released guidance on the management of asthma in 2017. These followed on quickly from the 2016 British Thoracic Society (BTS) guidelines. Given previous precedents where specialist societies or Royal colleges eventually default/contribute to NICE, we have followed the NICE guidance for the notes and questions.<br><br>NICE guidance has radically changed how asthma should be diagnosed. It advocates moving anyway from subjective/clinical judgements are more towards <b>objective</b> tests.<br><br>There is particular emphasis on the use of <b>fractional exhaled nitric oxide (FeNO)</b>. Nitric oxide is produced by 3 types of nitric oxide synthases (NOS). One of the types is inducible (iNOS) and levels tend to rise in inflammatory cells, particularly eosinophils. Levels of NO therefore typically correlate with levels of inflammation.<br><br>Other more established objective tests such as spirometry and peak flow variability are still important.<br><br>All patients >= 5 years should have objective tests. Once a child with suspected asthma reaches the age of 5 years objective tests should be performed to confirm the diagnosis.<br><br><b>Diagnostic testing</b><br><br>Patients >= 17 years <br><ul><li>patients should be asked if their symptoms are better on days away from work/during holidays. If so, patients should be referred to a specialist as possible occupational asthma</li><li><span id="concept_popover_id_1215" class="concept concept-0 trigger-link" data-cid="1215" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1215'>You've never been tested on this concept</div><br><div id='div_concept_rating1215' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(71,255,0)'>Importance: <b>86</b></span> </div>" data-original-title="Adults with suspected asthma should have both a FeNO test and spirometry with reversibility ">all patients should have spirometry with a bronchodilator reversibility (BDR) test</span></li><li><span id="concept_popover_id_1215" class="concept concept-0 trigger-link" data-cid="1215" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1215'>You've never been tested on this concept</div><br><div id='div_concept_rating1215' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(71,255,0)'>Importance: <b>86</b></span> </div>" data-original-title="Adults with suspected asthma should have both a FeNO test and spirometry with reversibility ">all patients should have a FeNO test</span></li></ul><br>Patients 5-16 years<br><ul><li>all patients should have spirometry with a bronchodilator reversibility (BDR) test</li><li><span class="concept" data-cid="8665">a FeNO test should be requested if there is normal spirometry or obstructive spirometry with a negative bronchodilator reversibility (BDR) test</span></li></ul><br>Patients < 5 years<br> - diagnosis should be made on clinical judgement<br><br><b>Specific points about the tests</b><br><br>FeNO<br><ul><li>in adults level of >= 40 parts per billion (ppb) is considered positive</li><li>in children a level of >= 35 parts per billion (ppb) is considered positive</li></ul><br>Spirometry<br><ul><li>FEV1/FVC ratio less than 70% (or below the lower limit of normal if this value is available) is considered obstructive</li></ul><br>Reversibility testing<br><ul><li>in adults, a positive test is indicated by an <span class="concept" data-cid="3925">improvement in FEV1 of 12% or more</span> and increase in volume of 200 ml or more</li><li>in children, a positive test is indicated by an <span class="concept" data-cid="3925">improvement in FEV1 of 12% or more</span></li></ul></div>
---
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Clinical clue</th><th>Possible diagnosis</th></tr></thead><tbody><tr><td>Predominant cough without lung<br>function abnormalities</td><td>Chronic cough syndromes; pertussis</td></tr><tr><td>Prominent dizziness, light-headedness, peripheral tingling</td><td>Dysfunctional breathing</td></tr><tr><td>Recurrent severe asthma attacks without objective confirmatory evidence</td><td>Vocal cord dysfunction</td></tr><tr><td>Predominant nasal symptoms without lung function abnormalities</td><td>Rhinitis</td></tr><tr><td>Postural and food-related symptoms, predominant cough</td><td>Gastro-oesophageal reflux</td></tr><tr><td>Orthopnoea, paroxysmal nocturnal dyspnoea, peripheral oedema, preexisting cardiac disease</td><td>Cardiac failure</td></tr><tr><td>Crackles on auscultation</td><td>Pulmonary fibrosis</td></tr><tr><td>Significant smoking history (ie, >30 pack-years), age of onset >35 years</td><td>COPD</td></tr><tr><td>Chronic productive cough in the absence of wheeze or breathlessness</td><td>Bronchiectasis; inhaled foreign body; obliterative bronchioitis; large airway stenosis</td></tr><tr><td>New onset in smoker, systemic symptoms, weight loss, haemoptysis</td><td>Lung cancer; sarcoidosis</td></tr></tbody></table></div>
!!Management of Bronchial Asthma in Adults
NICE released guidance on the management of asthma in 2017. These followed on quickly from the 2016 British Thoracic Society (BTS) guidelines. Given previous precedents where specialist societies or Royal colleges eventually default/contribute to NICE, we have followed the NICE guidance for the notes and questions.<br><br><div class="alert alert-warning">One of the key changes is in 'step 3' - patients on a SABA + ICS whose asthma is not well controlled should be offered a leukotriene receptor antagonist, not a LABA<br></div><br>NICE do not follow the stepwise approach of the previous BTS guidelines. However, to try to make the guidelines easier to follow we've added our own steps:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Step</th><th>Notes</th></tr></thead><tbody><tr><td><b>1</b><br><br>Newly-diagnosed asthma</td><td><span class="concept" data-cid="7535">Short-acting beta agonist (SABA)</span></td></tr><tr><td><b>2</b><br><br>Not controlled on previous step<br>OR<br>Newly-diagnosed asthma with symptoms >= 3 / week or night-time waking</td><td><span class="concept" data-cid="7536">SABA + low-dose inhaled corticosteroid (ICS)</span></td></tr><tr><td><b>3</b></td><td><span class="concept" data-cid="1247">SABA + low-dose ICS + leukotriene receptor antagonist (LTRA)</span></td></tr><tr><td><b>4</b></td><td><span class="concept" data-cid="7538">SABA + low-dose ICS + long-acting beta agonist (LABA)</span><br><br>Continue LTRA depending on patient's response to LTRA</td></tr><tr><td><b>5</b></td><td>SABA +/- LTRA<br><br><span class="concept" data-cid="7539">Switch ICS/LABA for a maintenance and reliever therapy (MART), that includes a low-dose ICS</span></td></tr><tr><td><b>6</b></td><td><span class="concept" data-cid="7540">SABA +/- LTRA + medium-dose ICS MART</span><br><br><span class="concept" data-cid="7540">OR consider changing back to a fixed-dose of a moderate-dose ICS and a separate LABA</span></td></tr><tr><td><b>7</b></td><td>SABA +/- LTRA + one of the following options:<br><ul><li><span class="concept" data-cid="7541">increase ICS to high-dose (only as part of a fixed-dose regime, not as a MART)</span></li><li><span class="concept" data-cid="7541">a trial of an additional drug (for example, a long-acting muscarinic receptor antagonist or theophylline)</span></li><li><span class="concept" data-cid="7541">seeking advice from a healthcare professional with expertise in asthma</span></li></ul></td></tr></tbody></table></div><br>Maintenance and reliever therapy (MART)<br><ul><li> a form of combined ICS and LABA treatment in which a single inhaler, containing both ICS and a fast-acting LABA, is used for both daily maintenance therapy and the relief of symptoms as required</li><li>MART is only available for ICS and LABA combinations in which the LABA has a fast-acting component (for example, formoterol)</li></ul><br>It should be noted that NICE does not advocate changing treatment in patients who have well-controlled asthma simply to adhere to the latest guidance.<br><br><b>Table showing examples of inhaled corticosteroid doses</b><br><br>Frustratingly, the definitions of what constitutes a low, moderate or high-dose ICS have also changed. For adults:<br><ul><li><= 400 micrograms budesonide or equivalent = low dose</li><li>400 micrograms - 800 micrograms budesonide or equivalent = moderate dose</li><li>> 800 micrograms budesonide or equivalent= high dose.</li></ul>
<div id="body_content">
NICE released guidance on the management of asthma in 2017. These followed on quickly from the 2016 British Thoracic Society (BTS) guidelines. Given previous precedents where specialist societies or Royal colleges eventually default/contribute to NICE, we have followed the NICE guidance for the notes and questions.<br><br><div class="alert alert-warning">Children aged 5-16 with asthma are now managed in a very similar way to adults<br></div><br><b>Children and young people aged 5 to 16</b><br><br>NICE do not follow the stepwise approach of the previous BTS guidelines. However, to try to make the guidelines easier to follow we've added our own steps:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Step</th><th>Notes</th></tr></thead><tbody><tr><td><b>1</b><br><br>Newly-diagnosed asthma</td><td><span class="concept" data-cid="7344">Short-acting beta agonist (SABA)</span></td></tr><tr><td><b>2</b><br><br>Not controlled on previous step<br>OR<br>Newly-diagnosed asthma with symptoms >= 3 / week or night-time waking</td><td><span class="concept" data-cid="7345">SABA + paediatric low-dose inhaled corticosteroid (ICS)</span></td></tr><tr><td><b>3</b></td><td><span class="concept" data-cid="7346">SABA + paediatric low-dose ICS + leukotriene receptor antagonist (LTRA)</span></td></tr><tr><td><b>4</b></td><td><span class="concept" data-cid="7347">SABA + paediatric low-dose ICS + long-acting beta agonist (LABA)</span><br><br>In contrast to the adult guidance, NICE recommend stopping the LTRA at this point if it hasn't helped</td></tr><tr><td><b>5</b></td><td><span class="concept" data-cid="7348">SABA + switch ICS/LABA for a maintenance and reliever therapy (MART), that includes a paediatric low-dose ICS</span></td></tr><tr><td><b>6</b></td><td>SABA + paediatric moderate-dose ICS MART<br><br>OR consider changing back to a fixed-dose of a moderate-dose ICS and a separate LABA</td></tr><tr><td><b>7</b></td><td><span class="concept" data-cid="7350">SABA + one of the following options</span>:<br><ul><li>increase ICS to paediatric high-dose, either as part of a fixed-dose regime or as a MART</li><li>a trial of an additional drug (for example theophylline)</li><li>seeking advice from a healthcare professional with expertise in asthma</li></ul></td></tr></tbody></table></div><br><br><b>Children aged less than 5 years</b><br><br>Clearly, it can be difficult to definitively diagnose asthma in young children. NICE acknowledge the greater role for clinical judgement in this age group.<br><br>Again, the stepwise approach is our own rather than NICE's:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Step</th><th>Notes</th></tr></thead><tbody><tr><td><b>1</b><br><br>Newly-diagnosed asthma</td><td><span class="concept" data-cid="7351">Short-acting beta agonist (SABA)</span></td></tr><tr><td><b>2</b><br><br>Not controlled on previous step<br>OR<br>Newly-diagnosed asthma with symptoms >= 3 / week or night-time waking</td><td><span class="concept" data-cid="7352">SABA + an 8-week trial of paediatric MODERATE-dose inhaled corticosteroid (ICS)</span><br><br>After 8-weeks stop the ICS and monitor the child's symptoms:<br><ul><li>if symptoms did not resolve during the trial period, review whether an alternative diagnosis is likely</li><li>if symptoms resolved then reoccurred within 4 weeks of stopping ICS treatment, restart the ICS at a paediatric low dose as first-line maintenance therapy</li><li>if symptoms resolved but reoccurred beyond 4 weeks after stopping ICS treatment, repeat the 8‑week trial of a paediatric moderate dose of ICS</li></ul></td></tr><tr><td><b>3</b></td><td><span class="concept" data-cid="7353">SABA + paediatric low-dose ICS + leukotriene receptor antagonist (LTRA)</span></td></tr><tr><td><b>4</b></td><td><span class="concept" data-cid="7354">Stop the LTRA and refer to an paediatric asthma specialist</span></td></tr></tbody></table></div><br><b>Other points</b><br><br>Maintenance and reliever therapy (MART)<br><ul><li> a form of combined ICS and LABA treatment in which a single inhaler, containing both ICS and a fast-acting LABA, is used for both daily maintenance therapy and the relief of symptoms as required</li><li>MART is only available for ICS and LABA combinations in which the LABA has a fast-acting component (for example, formoterol)</li></ul><br>It should be noted that NICE does not advocate changing treatment in patients who have well-controlled asthma simply to adhere to the latest guidance.<br><br><b>Table showing examples of inhaled corticosteroid doses</b><br><br>Frustratingly, the definitions of what constitutes a low, moderate or high-dose ICS have also changed. In contrast to the BTS guidelines NICE also have different definitions for adults and children. For children:<br><ul><li><= 200 micrograms budesonide or equivalent = paediatric low dose</li><li>200 micrograms - 400 micrograms budesonide or equivalent = paediatric moderate dose</li><li>> 400 micrograms budesonide or equivalent= paediatric high dose.</li></ul></div>
`A beta-blocker or a rate-limiting calcium channel blocker (e.g. diltiazem) is used first-line to control the rate in AF.`
<div id="body_content">
Atrial fibrillation (AF) is the most common sustained cardiac arrhythmia. It is very common, being present in around 5% of patients over aged 70-75 years and 10% of patients aged 80-85 years. Whilst uncontrolled atrial fibrillation can result in symptomatic palpitations and inefficient cardiac function probably the most important aspect of managing patients with AF is reducing the increased risk of stroke which is present in these patients.<br><br><br><b>Types of atrial fibrillation</b><br><br>AF may by classified as either first detected episode, paroxysmal, persistent or permanent.<br><ul><li><b>first detected episode</b> (irrespective of whether it is symptomatic or self-terminating)</li><li>recurrent episodes, when a patient has 2 or more episodes of AF. If episodes of AF terminate spontaneously then the term <b><span class="concept" data-cid="7654">paroxysmal AF</span></b> is used. Such episodes last less than 7 days (typically < 24 hours). If the arrhythmia is not self-terminating then the term <b><span class="concept" data-cid="7655">persistent AF</span></b> is used. Such episodes usually last greater than 7 days</li><li>in <b><span class="concept" data-cid="7656">permanent AF</span></b> there is continuous atrial fibrillation which cannot be cardioverted or if attempts to do so are deemed inappropriate. Treatment goals are therefore rate control and anticoagulation if appropriate</li></ul><br><br><b>Symptoms and signs</b><br><br>Symptoms<br><ul><li>palpitations</li><li>dyspnoea</li><li>chest pain</li></ul><br>Signs<br><ul><li>an irregularly irregular pulse</li></ul><br><br><b>Investigations</b><br><br>An ECG is essential to make the diagnosis as other conditions can give an irregular pulse, such as ventricular ectopics or sinus arrhythmia.<br><br><br><b>Management</b><br><br>There are two key parts of managing patients with AF:<br><ul><li>1. Rate/rhythm control</li><li>2. Reducing stroke risk</li></ul><br><b>Rate vs. rhythm control</b><br><br>There are two main strategies employed in dealing with the arrhythmia element of atrial fibrillation:<br><ul><li><b>rate control</b>: accept that the pulse will be irregular, but slow the rate down to avoid negative effects on cardiac function</li><li><b>rhythm control</b>: try to get the patient back into, and maintain, normal sinus rhythm. This is termed cardioversion. Drugs (pharmacological cardioversion) and synchronised DC electrical shocks (electrical cardioversion) may be used for this purpose</li></ul><br>For many years the predominant approach was to try and maintain a patient in sinus rhythm. This approach changed in the early 2000's and now the majority of patients are managed with a rate control strategy. NICE advocate using a rate control strategy except in a number of specific situations such as coexistent heart failure, first onset AF or where there is an obvious reversible cause.<br><br><b>Rate control</b><br><br>A <b>beta-blocker</b> or a <b>rate-limiting calcium channel blocker</b> (e.g. diltiazem) is used first-line to control the rate in AF. <br><br>If one drug does not control the rate adequately NICE recommend combination therapy with any 2 of the following:<br><ul><li>a betablocker</li><li>diltiazem</li><li>digoxin</li></ul><br><b>Rhythm control</b><br><br>As mentioned above there are a subgroup of patients for whom a rhythm control strategy should be tried first. Other patients may have had a rate control strategy initially but switch to rhythm control if symptoms/heart rate fails to settle.<br><br>When considering cardioversion it is very important to remember that the moment a patient switches from AF to sinus rhythm presents the highest risk for embolism leading to stroke. Imagine the thrombus formed in the fibrillating atrium suddenly being pushed out when sinus rhythm is restored. For this reason patients must either have had a short duration of symptoms (less than 48 hours) or be anticoagulated for a period of time prior to attempting cardioversion.<br><br><br><b>Reducing stroke risk</b><br><br>Some patients with AF are at a very low risk of stroke whilst others are at a very significant risk. Clinicians use risk stratifying tools such as the <b>CHA<sub>2</sub>DS<sub>2</sub>-VASc</b> score to determine the most appropriate anticoagulation strategy. <br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Risk factor</b></th><th><b> Points</b></th></tr></thead><tbody><tr><td> <b>C</b></td><td>Congestive heart failure</td><td>1</td></tr><tr><td> <b>H</b></td><td>Hypertension (or treated hypertension)</td><td>1</td></tr><tr><td> <b>A<sub>2</sub></b></td><td>Age >= 75 years</td><td>2</td></tr><tr><td></td><td>Age 65-74 years</td><td>1</td></tr><tr><td> <b>D</b></td><td>Diabetes</td><td>1</td></tr><tr><td> <b>S<sub>2</sub></b></td><td>Prior Stroke or TIA</td><td>2</td></tr><tr><td> <b>V</b></td><td>Vascular disease (including ischaemic heart disease and peripheral arterial disease)</td><td>1</td></tr><tr><td><b>S</b></td><td>Sex (female)</td><td>1</td></tr></tbody></table></div><br>The table below shows a suggested anticoagulation strategy based on the score:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Score</b></th><th><b>Anticoagulation</b></th></tr></thead><tbody><tr><td>0</td><td><span class="concept" data-cid="7649">No treatment</span></td></tr><tr><td>1</td><td><span class="concept" data-cid="7650">Males: Consider anticoagulation</span><br><span class="concept" data-cid="7651">Females: No treatment (this is because their score of 1 is only reached due to their gender)</span></td></tr><tr><td>2 or more</td><td><span class="concept" data-cid="7652">Offer anticoagulation</span></td></tr></tbody></table></div><br>NICE recommend that we offer patients a choice of anticoagulation, including warfarin and the novel oral anticoagulants (NOACs).</div>
<div id="notecontent">There are two scenarios where cardioversion may be used in atrial fibrillation:<br><ul><li>electrical cardioversion as an emergency if the patient is haemodynamically unstable</li><li>electrical or pharmacological cardioversion as an elective procedure where a rhythm control strategy is preferred.</li></ul><br>The notes below refer to cardioversion being used in the elective scenario for rhythm control. The wording of the 2014 NICE guidelines is as follows:<br><br><div class="bs-callout bs-callout-default"><i><i><br>offer rate or rhythm control if the onset of the arrhythmia is less than 48 hours, and start rate control if it is more than 48 hours or is uncertain<br></i></i></div><br><br><b>Onset < 48 hours</b><br><br>If the atrial fibrillation (AF) is definitely of less than 48 hours onset patients should be heparinised. Patients who have risk factors for ischaemic stroke should be put on lifelong oral anticoagulation. Otherwise, patients may be cardioverted using either:<br><ul><li>electrical - 'DC cardioversion'</li><li>pharmacology - amiodarone if structural heart disease, flecainide or amiodarone in those without structural heart disease</li></ul><br>Following electrical cardioversion if AF is confirmed as being less than 48 hours duration then further anticoagulation is unnecessary<br><br><b>Onset > 48 hours</b><br><br>If the patient has been in AF for more than 48 hours then anticoagulation should be given for at least 3 weeks prior to cardioversion. An alternative strategy is to perform a transoesophageal echo (TOE) to exclude a left atrial appendage (LAA) thrombus. If excluded patients may be heparinised and cardioverted immediately.<br><br>NICE recommend electrical cardioversion in this scenario, rather than pharmacological.<br><br>If there is a high risk of cardioversion failure (e.g. Previous failure or AF recurrence) then it is recommend to have at least 4 weeks amiodarone or sotalol prior to electrical cardioversion<br><br>Following electrical cardioversion patients should be anticoagulated for at least 4 weeks. After this time decisions about anticoagulation should be taken on an individual basis depending on the risk of recurrence</div>
!!!<center>''ATRIAL FIBRILLATION / FLUTTER PROTOCOL''</center>
<hr>
* Symptoms; palpitations, DOE, fatigue presyncope/syncope, CP)?
* Get ECG, CBC, KFT; CXR, TSH
* Cardiac markers if CAD, ECHO
* Is the pt stable or unstable?
* Unstable pt (SBP<90, AMS, acute pulmonary edema, AMI, wide QRS): Cardioversion 150 J + heparin bolus plus drip to goal aPTT 1.5-2 times ref
* If hemodynamically stable and known duration <48 hrs: BB or CCB for rate control OR sync DCCV
* If hemodynamically stable and known duration >48 hrs: Rate control and anticoagulate 3 wks before and 4 wks after CV
* Metoprolol Initial: 2.5–5 mg IV bolus q5min × 3, then start maintenance 25–100 mg PO BID
* Diltiazem Start 0.25 mg/kg IV × 1; may repeat 0.25–0.35 mg/kg IV after 15 min, then start maintenance 30 mg PO QID or 5–15 mg/h IV drip
* Amiodarone Start 150 mg IV over 10 min then maintenance at 0.5–1 mg/min IV
* Digoxin can be added to therapy w/ βB or CCB in pts whose HR is not controlled
* IV digoxin or amiodarone: control HR in pts w/ AF & HF
* Anticoagulation: All pts w/ AF or AFL (paroxysmal, persistent, or permanent) should be stratified using a predictive index for stroke (ie, CHADS2 or CHA2DS2-VASc) & most pts should receive anticoagulation
* Pts w/ very low risk of CVA (CHADS2 = 0) should receive ASA 81–325 mg/d
* Pts w/ low risk of CVA (CHADS2 = 1) should receive oral anticoagulation w/ either warfarin or dabigatran, but ASA is reasonable for some pts
* Pts w/ mod risk of CVA (CHADS2 ≥ 2) should receive oral anticoagulation w/ either warfarin or dabigatran
<hr>
!!!<center>''ATRIAL FIBRILLATION IN THE OPD''</center>
<hr>
* Hemodynamically unstable: Urgent cardioversion
* Hemodynamically stable: use BB or CCB
* Duration < 48 hrs: DC cardioversion OR Amiodarone pharmacological conversion
* Duration > 48 hrs or unknown: Pharmacologic or electric cardioversion should be delayed until there has been at least three weeks of adequate anticoagulation (INR 2 to 3).
* Tab Metolar 12.5/25/50 mg BD or
* Tab Dilzem 30/60 mg q6h 4 times a day or
* Tab DIlzem-CD 120/180/240 OD or
* Tab Lanoxin 0.5 mg STAT, then 0.25 mg every 6 hours then 0.125 mg daily
* Ecospirin 75 mg OD, Clopitab 75 mg OD for CAD
* TSH, CBC, Stool RE, PT/INR KFT, ECG, ECHO
* Anticoagulation with Warfarin
NICE issued guidelines on atrial fibrillation (AF) in 2006. They included advice on the management of patients with AF who develop a stroke or transient-ischaemic attack (TIA).
Recommendations include:
* following a stroke or TIA, warfarin or a direct thrombin or factor Xa inhibitor should be given as the anticoagulant of choice. Antiplatelets should only be given if needed for the treatment of other comorbidities
* in acute stroke patients, in the absence of haemorrhage, anticoagulation therapy should be commenced after 2 weeks. If imaging shows a very large cerebral infarction then the initiation of anticoagulation should be delayed
* Left atrial myxomas are more common than right (80%). Symptoms are due to local mechanical effects was well as embolisation (in 40%). 90% are sporadic. More common in females (75% of sporadic myxomas).
* Mechanical effects are due to obstruction to mitral valve, and can cause heart failure and syncope.
* Can cause Pansystolic MurMur
* Constitutional symptoms like fever, weight loss and arthralgia may be present.
* Familial myxoma may be associated with the CARNEY syndrome (myxomas in breast, skin, thyroid and neural tissue, pigmented naevi and endocrine dysfunction).
<hr><center>''ATROPINE''</center><hr>
<center>''Pediatric Dosage''</center><hr>
''Bradycardia:''
* ''I.V., I.O.:'' 0.02 mg/kg/dose; min: 0.1 mg;Endotracheal: 0.04-0.06 mg/kg/dose; may repeat once if needed
''Preanesthetic:''
* ''Oral, I.M., I.V., SubQ:'' Infants <5 kg: 0.02 mg/kg/dose 30-60 minutes preoperatively then every 4-6 hours as needed; Infants and Children >5 kg: 0.01-0.02 mg/kg/dose to a maximum 0.4 mg/dose 30-60 minutes preop minimum dose: 0.1 mg
!!Atypical antipsychotics
<div id="notecontent">should now be used first-line in patients with schizophrenia, according to 2005 NICE guidelines. The main advantage of the atypical agents is a significant reduction in extrapyramidal side-effects.<br><br>Adverse effects of atypical antipsychotics<br><ul><li><span id="concept_popover_id_736" class="concept concept-0 trigger-link" data-cid="736" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative736'>You've never been tested on this concept</div><br><div id='div_concept_rating736' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(101,255,0)'>Importance: <b>80</b></span> </div>" data-original-title="Atypical antipsychotics commonly cause weight gain">weight gain</span></li><li>clozapine is associated with <span id="concept_popover_id_1309" class="concept concept-3-u trigger-link" data-cid="1309" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1309'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating1309' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="Agranulocytosis/neutropenia is a life-threatening side effect of <b>clozapine</b> - monitor FBC">agranulocytosis</span> (see below)</li><li><span class="concept" data-cid="9323">hyperprolactinaemia</span></li></ul><br>The Medicines and Healthcare products Regulatory Agency has issued specific warnings when antipsychotics are used in elderly patients:<br><ul><li><span id="concept_popover_id_6155" class="concept concept-0 trigger-link" data-cid="6155" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6155'>You've never been tested on this concept</div><br><div id='div_concept_rating6155' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(61,255,0)'>Importance: <b>88</b></span> </div>" data-original-title="Antipsychotics may cause increased risk of ischaemic stroke">increased risk of stroke</span></li><li><span id="concept_popover_id_6156" class="concept concept-0 trigger-link" data-cid="6156" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6156'>You've never been tested on this concept</div><br><div id='div_concept_rating6156' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(66,255,0)'>Importance: <b>87</b></span> </div>" data-original-title="Antipsychotics may cause increased risk of venous thromboembolism">increased risk of venous thromboembolism</span></li></ul><br>Examples of atypical antipsychotics<br><ul><li>clozapine</li><li>olanzapine: <span class="concept" data-cid="8581">higher risk of dyslipidemia and obesity</span></li><li>risperidone</li><li>quetiapine</li><li>amisulpride</li><li><span class="concept" data-cid="1905">aripiprazole</span>: generally good side-effect profile, particularly for prolactin elevation</li></ul><br><b>Clozapine</b><br><br>Clozapine, one of the first atypical agents to be developed, carries a significant risk of <span id="concept_popover_id_1309" class="concept concept-3-u trigger-link" data-cid="1309" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1309'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating1309' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="Agranulocytosis/neutropenia is a life-threatening side effect of <b>clozapine</b> - monitor FBC">agranulocytosis</span> and full blood count monitoring is therefore essential during treatment. For this reason, clozapine should only be used in patients resistant to other antipsychotic medication. The BNF states:<br><br><div class="bs-callout bs-callout-default"><i><i><br>Clozapine should be introduced if <span id="concept_popover_id_10022" class="concept concept-0 trigger-link" data-cid="10022" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10022'>You've never been tested on this concept</div><br><div id='div_concept_rating10022' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(96,255,0)'>Importance: <b>81</b></span> </div>" data-original-title="Clozapine is indicated for patients with schizophrenia who have not responded adequately to at least 2 antipsychotics">schizophrenia is not controlled despite the sequential use of two or more antipsychotic drugs</span> (one of which should be a second-generation antipsychotic drug), each for at least 6–8 weeks. <br></i></i></div><br>Adverse effects of clozapine<br><ul><li><span id="concept_popover_id_1309" class="concept concept-3-u trigger-link" data-cid="1309" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1309'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating1309' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="Agranulocytosis/neutropenia is a life-threatening side effect of <b>clozapine</b> - monitor FBC">agranulocytosis (1%), neutropaenia (3%)</span></li><li><span class="concept" data-cid="4100">reduced seizure threshold</span> - can induce seizures in up to 3% of patients</li><li><span class="concept" data-cid="2691">constipation</span></li><li><span class="concept" data-cid="1768">myocarditis</span>: a baseline ECG should be taken before starting treatment</li><li><span class="concept" data-cid="8887">hypersalivation</span></li></ul><br>Dose adjustment of clozapine might be necessary if <span class="concept" data-cid="4101">smoking</span> is started or stopped during treatment.</div>
---
>Monitor WBC, SEIZures CLOZly
*weekly WBC monitor for Agranulocytosis, Seizures for first 6months
*CLOZapine has Least Extra Pyramidal Movements but Agranulocytosis
---
>Diabetes & Weight Gain in OLANZ CLOZ
*Least risk in ARIPIprazole - ZEPRAsidone ZEBRA ARIPInchelaa Parigeduthundi… so slim
---
<div id="notecontent">Audiograms are usually the first-line investigation that is performed when a patient complains of hearing difficulties. They are relatively easy to interpret as long as some simple rules are followed:<br><ul><li>anything above the 20dB line is essentially normal (marked in red on the blank audiogram below)</li><li>in sensorineural hearing loss both air and bone conduction are impaired</li><li>in conductive hearing loss only air conduction is impaired</li><li>in mixed hearing loss both air and bone conduction are impaired, with air conduction often being 'worse' than bone</li></ul> <br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd105b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd105.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd105b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
Autoimmune hepatitis is condition of unknown aetiology which is most commonly seen in young females. Recognised associations include other autoimmune disorders, hypergammaglobulinaemia and HLA B8, DR3. Three types of autoimmune hepatitis have been characterised according to the types of circulating antibodies present<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Type I</b></th><th><b>Type II</b></th><th><b>Type III</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="10881">Anti-nuclear antibodies (ANA) and/or anti-smooth muscle antibodies (SMA)</span><br><br>Affects both adults and children<br></td><td>Anti-liver/kidney microsomal type 1 antibodies (LKM1)<br><br>Affects children only<br></td><td>Soluble liver-kidney antigen<br><br>Affects adults in middle-age</td></tr></tbody></table></div><br>Features<br><ul><li>may present with signs of chronic liver disease</li><li>acute hepatitis: fever, jaundice etc (only 25% present in this way)</li><li>amenorrhoea (common)</li><li><span class="concept" data-cid="10881">ANA/SMA/LKM1 antibodies, raised IgG levels</span></li><li>liver biopsy: inflammation extending beyond limiting plate 'piecemeal necrosis', bridging necrosis</li></ul><br>Management<br><ul><li><span class="concept" data-cid="4262">steroids</span>, other immunosuppressants e.g. azathioprine</li><li>liver transplantation</li></ul>
* Interferon is Contraindicated as it worsens the disease
Autosomal recessive conditions are often thought to be 'metabolic' as opposed to autosomal dominant conditions being 'structural', notable exceptions:
some 'metabolic' conditions such as Hunter's and G6PD are X-linked recessive whilst others such as hyperlipidaemia type II and hypokalaemic periodic paralysis are autosomal dominant
some 'structural' conditions such as ataxia telangiectasia and Friedreich's ataxia are autosomal recessive
The following conditions are autosomal dominant:
* Achondroplasia
* Acute intermittent porphyria
* Adult polycystic disease
* Antithrombin III deficiency
* Ehlers-Danlos syndrome
* Familial adenomatous polyposis
* Hereditary haemorrhagic telangiectasia
* HereditarySpherocytosis
* Hereditary non-polyposis colorectal carcinoma
* HuntingTons Disease
* Hyperlipidaemia type II
* Hypokalaemic periodic paralysis
* Malignant hyperthermia
* MarFan's Syndrome
* Myotonic dystrophy
* NeuroFibromatosis
* Noonan syndrome
* Osteogenesis imperfecta
* Peutz-Jeghers syndrome
* RetinoBlastoma
* Romano-Ward syndrome
* TuberousSclerosis
* Von Hippel-Lindau syndrome
* Von Willebrand's disease*
*type 3 von Willebrand's disease (most severe form) is inherited as an autosomal recessive trait. Around 80% of patients have type 1 disease
---
>AutosomalRecessive conditions are 'metabolic' - exceptions: inherited ataxias
>AutosomalDominant conditions are 'structural' - exceptions: Gilbert's, hyperlipidaemia type II
---
* Albinism
* Ataxic telangiectasia
* Congenital adrenal hyperplasia
* Cystic fibrosis
* Cystinuria
* Familial Mediterranean Fever
* Fanconi anaemia
* Friedreich's ataxia
* Gilbert's syndrome*
* Glycogen storage disease
* Haemochromatosis
* Homocystinuria
* Lipid storage disease: Tay-Sach's, Gaucher, Niemann-Pick
* Mucopolysaccharidoses: Hurler's
* PKU
* Sickle cell anaemia
* Thalassaemias
* Wilson's disease
*this is still a matter of debate and many textbooks will list Gilbert's as autosomal dominant
---
>2 White Cystic Blood - 4 Liver storage - 4 Liver function
* 2 White: Albinism, Phenylketonuria
* 2 Cystic: ARPKD, Cystic Fibrosis
* 2 Blood: Sickle, Thal;
* 4 Liver storage: Glycogen, Hemochromatosis, Sphingomyelins(Friedrich instead of Fabry), Mucopolysaccaridoses(No Hunter)
* 4 Liver function: InheritedJaundice
---
>AutosomalRecessive conditions are 'metabolic' - exceptions: inherited ataxias
>AutosomalDominant conditions are 'structural' - exceptions: Gilbert's, hyperlipidaemia type II
---
In atrioventricular (AV) block, or heart block, there is impaired electrical conduction between the atria and ventricles. There are three types:
First-degree heart block
* PR interval > 0.2 seconds
* asymptomatic first-degree heart block is relatively common and does not need treatment
Second-degree heart block
* type 1 (Mobitz I, Wenckebach): progressive prolongation of the PR interval until a dropped beat occurs
* type 2 (Mobitz II): PR interval is constant but the P wave is often not followed by a QRS complex
Third-degree (complete) heart block
* there is no association between the P waves and QRS complexes
<div id="body_content">
Azathioprine is <span class="concept" data-cid="7992">metabolised to the active compound mercaptopurine, a purine analogue that inhibits purine synthesis</span>. A <span class="concept" data-cid="820">thiopurine methyltransferase (TPMT)</span> test may be needed to look for individuals prone to azathioprine toxicity.<br><br>Adverse effects include<br><ul><li><span class="concept" data-cid="7991">bone marrow depression</span></li><li>nausea/vomiting</li><li><span class="concept" data-cid="2628">pancreatitis</span></li><li><span class="concept" data-cid="2152">increased risk of non-melanoma skin cancer</span></li></ul><br>A significant interaction may occur with <span class="concept" data-cid="2766">allopurinol</span> and hence lower doses of azathioprine should be used.<br><br><span class="concept" data-cid="10600">Azathioprine is generally considered safe to use in pregnancy</span>.</div>
!!!<center>''BACTERIAL DESENTRY''</center>
<hr>
* Ceftriaxone 2gm IV OD 5 ds OR cefixime 10-15 mg/kg/ds x5 ds OR Azithro 1gm OD 3ds
!!!<center>''BACTERIAL MENINGITIS''</center>
<hr>
* ''<1 month:'' Streptococcus agalactiae, Escherichia coli, Listeria monocytogenes; Ampicillin plus cefotaxime; OR ampicillin plus an aminoglycoside
* ''1 to 23 months:'' Streptococcus pneumoniae, Neisseria meningitidis, S. agalactiae, Haemophilus influenzae, E. coli; Vancomycin plus a third-generation cephalosporin
* ''2 to 50 years:'' N. meningitidis, S. pneumoniae; Vancomycin plus a third-generation cephalosporin
* ''>50 years:'' S. pneumoniae, N. meningitidis, L. monocytogenes, aerobic gram-negative bacilli; Vancomycin plus ampicillin plus a third-generation cephalosporin
* Amikacin 5 mg/kg every 8 hours
* Ampicillin 2 g every 4 hours
* Cefotaxime 2 g every 4 to 6 hours
* Ceftazidime 2 g every 8 hours
* Ceftriaxone 2 g every 12 hours
* Gentamicin 1.7 mg/kg every 8 hours
* Meropenem 2 g every 8 hours
* Moxifloxacin 400 mg every 24 hoursΔ
* Tobramycin 1.7 mg/kg every 8 hours
* Vancomycin 15 to 20 mg/kg every 8 to 12 hours
* Dexamethasone 0.4 mg/kg every 12 hours for four days) starting before the first dose of antibiotics.
!!Basal cell carcinoma (BCC)
is one of the three main types of skin cancer. Lesions are also known as rodent ulcers and are characterised by slow-growth and local invasion. Metastases are extremely rare. BCC is the most common type of cancer in the Western world.<br><br>Features<br><ul><li>many types of BCC are described. The most common type is nodular BCC, which is described here</li><li>sun-exposed sites, especially the head and neck account for the majority of lesions</li><li>initially a pearly, flesh-coloured papule with telangiectasia</li><li>may later ulcerate leaving a central 'crater'</li></ul> <br>Referral<br><ul><li>generally, if a BCC is suspected, <span class="concept" data-cid="1701">a routine referral should be made </span></li></ul><br>Management options:<br><ul><li>surgical removal</li><li>curettage</li><li>cryotherapy</li><li>topical cream: imiquimod, fluorouracil </li><li>radiotherapy</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img069.jpg"></td></tr><tr><td valign="top" align="left"></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img070.jpg"></td></tr><tr><td valign="top" align="left"></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd071b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd071.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd071b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd072b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd072.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd072b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd073b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd073.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd073b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
Behcet's syndrome is a complex multisystem disorder associated with presumed autoimmune-mediated inflammation of the arteries and veins. The precise aetiology has yet to be elucidated however. The classic triad of symptoms are oral ulcers, genital ulcers and anterior uveitis
Epidemiology
* more common in the eastern Mediterranean (e.g. Turkey)
* more common in men (complicated gender distribution which varies according to country. Overall, Behcet's is considered to be more common and more severe in men)
* tends to affect young adults (e.g. 20 - 40 years old)
* associated with [[HLA]] B51
* around 30% of patients have a positive family history
Features
* classically: 1) oral ulcers 2) genital ulcers 3) anterior uveitis
* thrombophlebitis and deep vein thrombosis
* arthritis
* neurological involvement (e.g. aseptic meningitis)
* GI: abdo pain, diarrhoea, colitis
* erythema nodosum
Diagnosis
* no definitive test
* diagnosis based on clinical findings
* positive pathergy test is suggestive (puncture site following needle prick becomes inflamed with small pustule forming)
*more specifically HLA B51, a split antigen of HLA B5
<div id="notecontent">Bell's palsy may be defined as an acute, unilateral, idiopathic, facial nerve paralysis. The aetiology is unknown although the role of the herpes simplex virus has been investigated previously. The peak incidence is 20-40 years and the condition is more common in pregnant women.<br><br>Features<br><ul><li>lower motor neuron facial nerve palsy - forehead affected*</li><li>patients may also notice post-auricular pain (may precede paralysis), altered taste, dry eyes, hyperacusis</li></ul><br>Management<br><ul><li>in the past a variety of treatment options have been proposed including no treatment, prednisolone only and a combination of aciclovir and prednisolone</li><li>following a National Institute for Health randomised controlled trial it is now recommended that prednisolone 1mg/kg for 10 days should be prescribed for patients within 72 hours of onset of Bell's palsy. Adding in aciclovir gives no additional benefit</li><li>eye care is important - prescription of artificial tears and eye lubricants should be considered</li></ul><br>Prognosis<br><ul><li>if untreated around 15% of patients have permanent moderate to severe weakness</li></ul><br>*upper motor neuron lesion 'spares' upper face</div>
`A vesicular rash around the ear would suggest a diagnosis of RamSey Hunt syndrome. Vs.
Hyperacusis is seen in around a third of Bell's Palsy patients and pain behind ear in 50%`
IgA nephropathy (also known as Berger's disease) is the commonest cause of glomerulonephritis worldwide. It classically presents as `macroscopic haematuria in young people following an upper respiratory tract infection`
Associated conditions
* alcoholic cirrhosis
* coeliac disease/dermatitis herpetiformis
* Henoch-Schonlein purpura
Pathophysiology
* thought to be caused by mesangial deposition of IgA immune complexes
* there is considerable pathological overlap with Henoch-Schonlein purpura (HSP)
* histology: mesangial hypercellularity, positive immunofluorescence for IgA & C3
Presentations
* young male, recurrent episodes of macroscopic haematuria
* typically associated with a recent respiratory tract infection
* nephrotic range proteinuria is rare
* renal failure is unusual and seen in a minority of patients
Differentiating between IgA nephropathy and post-streptococcal glomerulonephritis
* post-streptococcal glomerulonephritis is associated with low complement levels
* main symptom in post-streptococcal glomerulonephritis is proteinuria (although haematuria can occur)
* there is typically an interval between URTI and the onset of renal problems in post-streptococcal glomerulonephritis
<center>
<img width=500 src="https://www.dropbox.com/s/5wwqj4e9gz2w04r/bergers-psgn.png?raw=1">
</center>
Management
* steroids/immunosuppressants not be shown to be useful
Prognosis
* 25% of patients develop ESRF
* markers of good prognosis: frank haematuria
* markers of poor prognosis: male gender, proteinuria (especially > 2 g/day), hypertension, smoking, hyperlipidaemia, ACE genotype DD
<center>
<img width=400 src="https://www.dropbox.com/s/9d3zt04jvshfmch/bergers2.jpg?raw=1">
</center>
Proliferation and hypercellularity of the mesangium is seen in the glomerulus
<center>
<img width=400 src="https://www.dropbox.com/s/xewtx7x4ickck5u/bergers3.jpg?raw=1">
</center>
Immunostaining for IgA in a patient with HSP
Features
* bradycardia
* hypotension
* heart failure
* syncope
Management
* if bradycardic then atropine
* in resistant cases glucagon may be used
Haemodialysis is not effective in beta-blocker overdose
<div id="body_content">
Beta-blockers are an important class of drug used mainly in the management of cardiovascular disorders.<br><br>Indications<br><ul><li>angina</li><li>post-myocardial infarction</li><li>heart failure: beta-blockers were previously avoided in heart failure but there is now strong evidence that certain beta-blockers improve both symptoms and mortality</li><li>arrhythmias: beta-blockers have now replaced digoxin as the rate-control drug of choice in atrial fibrillation</li><li>hypertension: the role of beta-blockers has diminished in recent years due to a lack of evidence in terms of reducing stroke and myocardial infarction.</li><li>thyrotoxicosis</li><li>migraine prophylaxis</li><li>anxiety</li></ul><br>Examples<br><ul><li>atenolol</li><li>propranolol: one of the first beta-blockers to be developed. Lipid soluble therefore crosses the blood-brain barrier</li></ul><br>Side-effects<br><ul><li><span class="concept" data-cid="7425">bronchospasm</span></li><li><span class="concept" data-cid="7426">cold peripheries</span></li><li><span class="concept" data-cid="7427">fatigue</span></li><li><span class="concept" data-cid="7431">sleep disturbances, including nightmares</span></li><li><span class="concept" data-cid="2286">erectile dysfunction</span></li></ul><br>Contraindications<br><ul><li>uncontrolled heart failure</li><li>asthma</li><li>sick sinus syndrome</li><li><span class="concept" data-cid="3531">concurrent verapamil use: may precipitate severe bradycardia</span></li></ul></div>
---
>Angina-Post MI-NOT in Asthma
>Heart Failure - NOT in uncontrolled
>Arrhythmia - NOT in Sick Sinus or with Verapamil
>HTN - usually in last
---
>For Arrthymia - causes Dysrhythmia(Disturbance) in Sleep & Sex Life
Sleep disturbances, including Nightmares - Fatigue - Erectile dysfunction
---
>Beta Blockers - TWO Blockages - Dysrhythmia and Constriction
BronchoSpasm-Cold peripheries(peripheral VasoSpasm)
!!Bile-acid malabsorption
is a cause of chronic diarrhoea. This may be primary, due to excessive production of bile acid, or secondary to an underlying gastrointestinal disorder causing reduced bile acid absorption. It can lead to steatorrhoea and vitamin A, D, E, K malabsorption.
Secondary causes are often seen in patients with ileal disease, such as with Crohn's. Other secondary causes include:
* cholecystectomy
* coeliac disease
* small intestinal bacterial overgrowth
Investigation
* the test of choice is SeHCAT
* nuclear medicine test using a gamma-emitting selenium molecule in selenium homocholic acid taurine or tauroselcholic acid (SeHCAT)
* scans are done 7 days apart to assess the retention/loss of radiolabelled 75SeHCAT
Management
* bile acid sequestrants e.g. cholestyramine
<div id="body_content">
Bisphosphonates are analogues of pyrophosphate, a molecule which decreases demineralisation in bone. They <span class="concept" data-cid="943">inhibit osteoclasts</span> by reducing recruitment and promoting apoptosis.<br><br>Clinical uses<br><ul><li>prevention and treatment of osteoporosis</li><li>hypercalcaemia</li><li>Paget's disease</li><li>pain from bone metatases</li></ul><br>Adverse effects<br><ul><li><span class="concept" data-cid="942">oesophageal reactions</span>: oesophagitis, oesophageal ulcers (especially alendronate)</li><li><span class="concept" data-cid="2633">osteonecrosis of the jaw</span></li><li>increased risk of <span class="concept" data-cid="7993">atypical stress fractures</span> of the proximal femoral shaft in patients taking alendronate</li><li>acute phase response: fever, myalgia and arthralgia may occur following administration</li><li>hypocalcaemia: due to reduced calcium efflux from bone. Usually clinically unimportant</li></ul><br>The BNF suggests the following counselling for patients taking oral bisphosphonates<br><ul><li>'Tablets should be swallowed whole with plenty of water while sitting or standing; to be given on an empty stomach at least 30 minutes before breakfast (or another oral medication); patient should stand or sit upright for at least 30 minutes after taking tablet'</li></ul><br><span class="concept" data-cid="10439">Hypocalcemia/vitamin D deficiency should be corrected before giving bisphosphonates</span>. However, when starting bisphosphonate treatment for osteoporosis, <span class="concept" data-cid="9560">calcium should only be prescribed if dietary intake is inadequate</span>. Vitamin D supplements are normally given.<br><br>The duration of bisphosphonate treatment varies according to the level of risk. Some authorities recommend stopping bisphosphonates at 5 years if the following apply:<br><ul><li>patient is < 75-years-old</li><li>femoral neck T-score of > -2.5</li><li>low risk according to FRAX/NOGG</li></ul></div>
!!Animal bites
The majority of bites seen in everyday practice involve dogs and cats. These are generally polymicrobial but the most common isolated organism is Pasteurella multocida.
;Management
* cleanse wound. `Puncture wounds should not be sutured closed unless cosmesis is at risk`
* current BNF recommendation is co-amoxiclav
* if penicillin-allergic then doxycycline + metronidazole is recommended
---
>METRO DOX for METRO DOGS if PENICILLIN ALLERGY
*Metronidazole + Doxycycline for (Animal Bites) if Penicillin allergy
---
!!Human bites
Human bites commonly cause multimicrobial infection, including both aerobic and anaerobic bacteria.
;Common organisms include:
* Streptococci spp.
* Staphylococcus aureus
* Eikenella
* Fusobacterium
* Prevotella
`Co-amoxiclav` is recommended, as for animal bites.
The risk of viral infections such as HIV and hepatitis C should also be considered.
Bivalirudin is a reversible direct thrombin inhibitor used as an anticoagulant in the management of acute coronary syndrome.
<div id="notecontent">The table below outlines the major causes of bleeding during pregnancy. Antepartum haemorrhage is defined as bleeding after 24 weeks<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>1st trimester</b></th><th><b>2nd trimester</b></th><th><b>3rd trimester</b></th></tr></thead><tbody><tr><td>Spontaneous abortion<br>Ectopic pregnancy<br>Hydatidiform mole</td><td>Spontaneous abortion<br>Hydatidiform mole<br>Placental abruption<br></td><td>Bloody show<br>Placental abruption<br>Placenta praevia<br>Vasa praevia</td></tr></tbody></table></div><br>Alongside the pregnancy related causes, conditions such as sexually transmitted infections and cervical polyps should be excluded. <br><br>The table below outlines the key features of each condition:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Spontaneous abortion</b></th><th><b>Threatened miscarriage</b> - painless vaginal bleeding typically around 6-9 weeks<br><b>Missed (delayed) miscarriage</b> - light vaginal bleeding and symptoms of pregnancy disappear<br><b>Inevitable miscarriage</b> - complete or incomplete depending or whether all fetal and placental tissue has been expelled. <b>Incomplete miscarriage</b> - heavy bleeding and crampy, lower abdo pain. <b>Complete miscarriage</b> - little bleeding</th></tr></thead><tbody><tr><td><b>Ectopic pregnancy</b></td><td>Typically history of 6-8 weeks amenorrhoea with lower abdominal pain (usually unilateral) initially and vaginal bleeding later. Shoulder tip pain and cervical excitation may be present</td></tr><tr><td><b>Hydatidiform mole</b></td><td>Typically bleeding in first or early second trimester associated with exaggerated symptoms of pregnancy e.g. hyperemesis. The uterus may be large for dates and serum hCG is very high</td></tr><tr><td><b>Placental abruption</b></td><td>Constant lower abdominal pain and, woman may be more shocked than is expected by visible blood loss. Tender, tense uterus* with normal lie and presentation. Fetal heart may be distressed</td></tr><tr><td><b>Placental praevia</b></td><td>Vaginal bleeding, no pain. Non-tender uterus* but lie and presentation may be abnormal</td></tr><tr><td><b>Vasa praevia</b></td><td>Rupture of membranes followed immediately by vaginal bleeding. Fetal bradycardia is classically seen</td></tr></tbody></table></div><br>*vaginal examination should not be performed in primary care for suspected antepartum haemorrhage - women with placenta praevia may haemorrhage</div>
<div id="notecontent">B-type natriuretic peptide (BNP) is a hormone produced mainly by the <span class="concept" data-cid="321">left ventricular myocardium</span> <span class="concept" data-cid="4426">in response to strain</span>.<br><br>Whilst heart failure is the most obvious cause of raised BNP levels any cause of left ventricular dysfunction such as myocardial ischaemia or valvular disease may raise levels. Raised levels may also be seen due to reduced excretion in patients with <span class="concept" data-cid="9527">chronic kidney disease</span>. Factors which reduce BNP levels include treatment with ACE inhibitors, angiotensin-2 receptor blockers and diuretics. <br><br><span class="concept" data-cid="322">Effects of BNP</span><br><ul><li>vasodilator</li><li>diuretic and natriuretic</li><li>suppresses both sympathetic tone and the renin-angiotensin-aldosterone system</li></ul><br><b>Clinical uses of BNP</b><br><br>Diagnosing patients with acute dyspnoea<br><ul><li>a low concentration of BNP(< 100pg/ml) makes a diagnosis of heart failure unlikely, but raised levels should prompt further investigation to confirm the diagnosis</li><li>NICE currently recommends BNP as a helpful test to rule out a diagnosis of heart failure</li></ul><br>Prognosis in patients with chronic heart failure<br><ul><li>initial evidence suggests BNP is an extremely useful marker of prognosis</li></ul><br>Guiding treatment in patients with chronic heart failure<br><ul><li>effective treatment lowers BNP levels</li></ul><br>Screening for cardiac dysfunction<br><ul><li>not currently recommended for population screening</li></ul></div>
|!Disorder|!Calcium|!Phosphate|!PTH|!ALP|
|!Osteoporosis |Normal|Normal|Normal|Normal|
|!Osteopetrosis |Normal|Normal|Normal|Normal|
|!Paget's disease |Normal|Normal|Normal|Increased|
|!Osteomalacia |Decreased|Decreased|Increased|Increased|
|!Primary hyperparathyroidism<br>(→ osteitis fibrosa cystica) |Increased|Decreased|Increased|Increased|
|!Chronic kidney disease<br>(→ secondary hyperparathyroidism) |Decreased|Increased|Increased|Increased|
As well as the well-publicised cosmetic uses of Botulinum toxin ('Botox') there are also a number of licensed indications:
* blepharospasm
* hemifacial spasm
* focal spasticity including cerebral palsy patients, hand and wrist disability associated with stroke
* spasmodic torticollis
* severe hyperhidrosis of the axillae
* achalasia
A 'Boxer fracture' typically occurs when the patient punches a hard surfaces, and describes a minimally displaced 5th metacarpal fracture
<div id="notecontent">Boxer fracture describes a minimally displaced fracture of the fifth metacarpal. This typically results following the patient punching a hard surface, for example a wall.<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb231b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb231.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb231b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Boxer fracture of the 5th metacarpal</div></div>
Benign prostatic hyperplasia (BPH) is a common condition seen in older men.
;Risk factors
* age: around 50% of 50-year-old men will have evidence of BPH and 30% will have symptoms. Around 80% of 80-year-old men have evidence of BPH
* ethnicity: black > white > Asian
;BPH typically presents with lower urinary tract symptoms (LUTS), which may be categorised into:
* voiding symptoms (obstructive): weak or intermittent urinary flow, straining, hesitancy, terminal dribbling and incomplete emptying
* storage symptoms (irritative) urgency, frequency, urgency incontinence and nocturia
* post-micturition: dribbling
* complications: urinary tract infection, retention, obstructive uropathy
;Management options
* watchful waiting
* medication: alpha-1 antagonists, 5 alpha-reductase inhibitors. The use of combination therapy was supported by the Medical Therapy Of Prostatic Symptoms (MTOPS) trial
* surgery: transurethral resection of prostate (TURP)
;Alpha-1 antagonists e.g. tamsulosin, alfuzosin
* decrease smooth muscle tone (prostate and bladder)
* considered first-line, improve symptoms in around 70% of men
* adverse effects: dizziness, postural hypotension, dry mouth, depression
;5 alpha-reductase inhibitors e.g. finasteride
* block the conversion of testosterone to dihydrotestosterone (DHT), which is known to induce BPH
* unlike alpha-1 antagonists causes a reduction in prostate volume and hence may slow disease progression. This however takes time and `symptoms may not improve for 6 months`. They may also decrease PSA concentrations by up to 50%
* adverse effects: erectile dysfunction, reduced libido, ejaculation problems, gynaecomastia
The Brandt-Daroff manoeuvre is used in the management of benign positional paroxysmal vertigo (BPPV).
!!!<center>''BRADYCARDIA''</center>
<hr>
//Scenario: Parul sister from Female ward notifies you that a 66-year-old woman has a heart rate of 40 beats per minute (bpm). She was admitted earlier in the day with syncope//
* Immediate Questions
* What are the patient’s other vital signs?
* Get ECG STAT, put on cardiac monitor
* Vitals unstable: shift to ICU
* What has the patient’s heart rate been since admission?
* Any symptoms possibly related to the bradycardia?
* Such may be fatigue, dizziness, syncope, nausea, dyspnea, chest pain, decreased urinary output, or altered mental status.
* Send ECG to Physician or Cardiologist
* Sinus bradycardia, asymptomatic: continue to monitor
* Sinoatrial node dysfunction/sick sinus syndrome?
* Myocardial infarction?
* Cushing’s reflex? (Sinus bradycardia+HTN) associated with an increase in intracranial pressure (hemorrhagic stroke, meningitis, intracranial tumor, or trauma).
* Check medications: beta-blockers, digoxin, calcium channel blockers, clonidine (Arkamin), amiodarone (Cordarone) etc
* Heart block in ECG: Cardio consult, Temporary or permanent pacemaker
* Check K, TSH
* Hold meds associated with bradycardia
* If the patient is asymptomatic, continue to monitor
* If symptomatic: Inj Atropine. 0.5–1.0 mg IV push, up to a total dose of 2.0 mg
* Dopamine 5–20 μg/kg/min, or epinephrine 2–10 μg/min can be used after atropine if the heart rate is not adequate to maintain hemodynamic stability.
* Treatment of bradycardia secondary to a CNS event by decreasing intracranial pressure by hyperventilation, furosemide, and dexamethasone
* Pacemaker insertion
!!!<center>''BRADYCARDIA PROTOCOL''</center>
<hr>
* Follow ACLS protocols for anyone unstable or severely symptomatic (CP, SOB, AMS)
* Anticipate need for external/transvenous pacing & cardiology consult early
* Always obtain ECG & rhythm strip
* Medication hx is crucial
* Definition: HR <60 in an adult, <80 in a child <15 y/o, <100 in an infant <1 y/o.
* Sinus Bradycardia: Rx: Asymptomatic bradycardia does not require tx.
* Tx only if symptomatic or life-threatening cause is suspected w/ atropine &/or pacing.
* Inj Atropine IV 0.5 mg every 3-5 minutes, not to exceed a total of 3 mg or 0.04 mg/kg OR
* Inj Dopamine drip first, next try
* Inj Adrenaline
* Admit anyone who is symptomatic
* If AV nodal block:
* 1° & 2° Mobitz I: No tx generally necessary
* 2° Mobitz II & 3°: Continuous tele monitoring
* Symptomatic pts require transcutaneous &/or transvenous pacing;
* if HD unstable, consider a beta-adrenergic agent (dopamine, epinephrine, or isoproterenol) as bridge to pacing.
* Treat active cardiac ischemia
* Consult cardiology
!!!<center>''BRAIN ABSCESS''</center>
<hr>
* Vancomycin (15 to 20 mg/kg per dose IV every 8 to 12 hours, not to exceed 2 g per dose) PLUS
* Either ceftriaxone (2 g IV every 12 hours) or cefotaxime (2 g IV every four to six hours) PLUS
* Metronidazole (15 mg/kg [usually 1 g] IV as a loading dose, followed by 7.5 mg/kg [usually 500 mg] IV every eight hours)
* Duration of therapy — usually four to eight weeks.
Basics
* CNS abscesses may result from a number of causes including, extension of sepsis from middle ear or sinuses, trauma or surgery to the scalp, penetrating head injuries and embolic events from endocarditis
Features
* The presenting symptoms will depend upon the site of the abscess (those in critical areas e.g. motor cortex) will present earlier. Abscesses have a considerable mass effect in the brain and raised intra cranial pressure is common.
* Although fever, headache and focal neurology are highly suggestive of a brain abscess the absence of one or more of these does not exclude the diagnosis, fever may be absent and even if present, is usually not the swinging pyrexia seen with abscesses at other sites.
Investigations
* Assessment of the patient includes imaging with CT scanning
Management
* Surgery: a craniotomy is performed and the abscess cavity debrided. The abscess may reform because the head is closed following abscess drainage.
* Antibiotics: IV 3rd-generation cephalosporin + metronidazole
* Intracranial pressure management: e.g. dexamethasone
<div id="notecontent">The table below describes some of the features seen in the most common breast disorders:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Disorder</b></th><th><b>Features</b></th></tr></thead><tbody><tr><td><b><span id="concept_popover_id_7547" class="concept concept-3-u trigger-link" data-cid="7547" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7547'>You've been tested on this concept once, 1 month ago, and got the associated question correct.</div><br><div id='div_concept_rating7547' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="A 25-year-old woman presents with a discrete, non-tender, highly mobile lump in her breast - fibroadenoma">Fibroadenoma</span></b></td><td>Common in women under the age of 30 years<br>Often described as 'breast mice' due as they are<span class="concept" data-cid="4492"> discrete, non-tender, highly mobile lumps</span></td></tr><tr><td><b><span id="concept_popover_id_7548" class="concept concept-3-u trigger-link" data-cid="7548" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7548'>You've been tested on this concept once, 1 month ago, and got the associated question correct.</div><br><div id='div_concept_rating7548' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(224,255,0)'>Importance: <b>56</b></span> </div>" data-original-title="A 40-year-old woman complains of 'lumpy' breasts which are painful. Her symptoms are generally worse just before menstruation - fibroadenosis">Fibroadenosis</span> (fibrocystic disease, benign mammary dysplasia)</b></td><td>Most common in middle-aged women<br>'Lumpy' breasts which may be painful. Symptoms may worsen prior to menstruation</td></tr><tr><td><b>Breast cancer</b></td><td>Characteristically a hard, irregular lump. There may be associated nipple inversion or skin tethering<br><br><b><span class="concept" data-cid="7550">Paget's disease of the breast</span></b> - intraductal carcinoma associated with a reddening and thickening (may resemble eczematous changes) of the nipple/areola</td></tr><tr><td><b><span id="concept_popover_id_7551" class="concept concept-1 trigger-link" data-cid="7551" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7551'>You've been tested on this concept once, 1 month ago, and got the associated question incorrect.</div><br><div id='div_concept_rating7551' class='text-right' style ='font-size:90%;'>You've rated this <span style='color:green'>important</span> <br><span style = 'border-bottom: 5px solid rgb(147,255,0)'>Importance: <b>71</b></span> </div>" data-original-title="A 50-year-old woman presents with a tender lump around the areola associated with green nipple discharge - mammary duct ectasia">Mammary duct ectasia</span></b></td><td>Dilatation of the large breast ducts<br>Most common around the menopause<br>May present with a tender lump around the areola +/- a green nipple discharge<br>If ruptures may cause local inflammation, sometimes referred to as 'plasma cell mastitis'</td></tr><tr><td><b><span id="concept_popover_id_7552" class="concept concept-3-u trigger-link" data-cid="7552" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7552'>You've been tested on this concept once, 1 month ago, and got the associated question correct.</div><br><div id='div_concept_rating7552' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(152,255,0)'>Importance: <b>70</b></span> </div>" data-original-title="A 40-year-old woman presents with a watery, blood-stained discharge from her nipple. There are no palpable lumps or skin changes - duct papilloma">Duct papilloma</span></b></td><td>Local areas of epithelial proliferation in large mammary ducts<br>Hyperplastic lesions rather than malignant or premalignant<br>May present with <span id="concept_popover_id_5229" class="concept concept-1 trigger-link" data-cid="5229" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5229'>You've been tested on this concept once, 1 week ago, and got the associated question incorrect.</div><br><div id='div_concept_rating5229' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(203,255,0)'>Importance: <b>60</b></span> </div>" data-original-title="Duct papilloma may present with blood-stained discharge">blood stained discharge</span></td></tr><tr><td><b><span class="concept" data-cid="7553">Fat necrosis</span></b></td><td>More common in obese women with large breasts<br><span class="concept" data-cid="7553">May follow trivial or unnoticed trauma</span><br>Initial inflammatory response, the lesion is typical firm and round but may develop into a hard, irregular breast lump<br>Rare and may mimic <span id="concept_popover_id_7549" class="concept concept-3-u trigger-link" data-cid="7549" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7549'>You've been tested on this concept once, 1 month ago, and got the associated question correct.</div><br><div id='div_concept_rating7549' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(142,255,0)'>Importance: <b>72</b></span> </div>" data-original-title="A 70-year-old woman presents with a hard, irregular, non-tender lump in the breast - breast cancer">breast cancer</span> so further investigation is always warranted</td></tr><tr><td><b><span id="concept_popover_id_7554" class="concept concept-3-u trigger-link" data-cid="7554" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7554'>You've been tested on this concept once, 4 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating7554' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(193,255,0)'>Importance: <b>62</b></span> </div>" data-original-title="A women who is breast feeding presents with a very painful, red swelling above her areola - breast abscess">Breast abscess</span></b></td><td>More common in lactating women<br>Red, hot tender swelling</td></tr></tbody></table></div><br>Lipomas and sebaceous cysts may also develop around the breast tissue.</div>
Predisposing factors
*BRCA1, BRCA2 genes - 40% lifetime risk of breast/ovarian cancer
*1st degree relative premenopausal relative with breast cancer (e.g. mother)
*nulliparity, 1st pregnancy > 30 yrs (twice risk of women having 1st child < 25 yrs)
*early menarche, late menopause
*combined hormone replacement therapy (relative risk increase * 1.023/year of use), combined oral contraceptive use
*past breast cancer
*not breastfeeding
*ionising radiation
*p53 gene mutations
*obesity
*previous surgery for benign disease (?more follow-up, scar hides lump)
---
!!Breast cancer: referral
NICE published referral guidelines for suspected breast cancer in 2015 (our emphasis):
Refer people using a suspected cancer pathway referral (for an appointment within 2 weeks) for breast cancer if they are:
* aged 30 and over and have an unexplained breast lump with or without pain or
* aged 50 and over with any of the following symptoms in one nipple only: discharge, retraction or other changes of concern
Consider a suspected cancer pathway referral (for an appointment within 2 weeks) for breast cancer in people:
* with skin changes that suggest breast cancer or
* aged 30 and over with an unexplained lump in the axilla
Consider non-urgent referral in people aged under 30 with an unexplained breast lump with or without pain.
---
{{FemaleCancers}}
<div id="notecontent">The management of breast cancer depends on the staging, tumour type and patient background. It may involve any of the following:<br><ul><li>surgery</li><li>radiotherapy</li><li>hormone therapy</li><li>biological therapy</li><li>chemotherapy</li></ul><br><b>Surgery</b><br><br>The vast majority of patients who have breast cancer diagnosed will be offered surgery. An exception may be a very frail, elderly lady with metastatic disease who may be better managed with hormonal therapy.<br><br>Prior to surgery, the presence/absence of axillary lymphadenopathy determines management:<br><ul><li><span class="concept" data-cid="10185">women with no palpable axillary lymphadenopathy at presentation should have a pre-operative axillary ultrasound</span> before their primary surgery<ul><li><span class="concept" data-cid="10186">if positive then they should have a sentinel node biopsy to assess the nodal burden</span></li></ul></li><li><span class="concept" data-cid="10189">in patients with breast cancer who present with clinically palpable lymphadenopathy, axillary node clearance is indicated at primary surgery</span><ul><li><span class="concept" data-cid="10191">this may lead to arm lymphedema and functional arm impairment</span></li></ul></li></ul><br>Depending on the characteristics of the tumour women either have a wide-local excision or a mastectomy. Around two-thirds of tumours can be removed with a wide-local excision. The table below lists some of the factors determining which operation is offered:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Mastectomy</b></th><th><b>Wide Local Excision</b></th></tr></thead><tbody><tr><td>Multifocal tumour</td><td>Solitary lesion</td></tr><tr><td>Central tumour</td><td>Peripheral tumour</td></tr><tr><td>Large lesion in small breast</td><td>Small lesion in large breast</td></tr><tr><td>DCIS > 4cm</td><td>DCIS < 4cm</td></tr></tbody></table></div><br>Women should be offered breast reconstruction to achieve a cosmetically suitable result regardless of the type of operation they have. For women who've had a mastectomy this may be done at the initial operation or at a later date.<br><br><b>Radiotherapy</b><br><br><span class="concept" data-cid="9151">Whole breast radiotherapy is recommended after a woman has had a wide-local excision as this may reduce the risk of recurrence by around two-thirds</span>. For women who've had a mastectomy radiotherapy is offered for T3-T4 tumours and for those with four or more positive axillary nodes<br><br><b>Hormonal therapy</b><br><br>Adjuvant hormonal therapy is offered if tumours are positive for hormone receptors. For many years this was done using tamoxifen for 5 years after diagnosis. <span class="concept" data-cid="3967">Tamoxifen is still used in pre- and peri-menopausal women</span>. In <span class="concept" data-cid="1261">post-menopausal women, aromatase inhibitors such as anastrozole</span> are used for this purpose*. This is important as aromatisation accounts for the majority of oestrogen production in post-menopausal women and therefore anastrozole is used for ER +ve breast cancer in this group. <br><br>Important side-effects of tamoxifen include an increased risk of endometrial cancer, venous thromboembolism and menopausal symptoms.<br><br><b>Biological therapy</b><br><br>The most common type of biological therapy used for breast cancer is <span class="concept" data-cid="3966">trastuzumab (Herceptin)</span>. It is only useful in the 20-25% of tumours that are <span class="concept" data-cid="3966">HER2 positive</span>.<br><br>Trastuzumab cannot be used in patients with a history of heart disorders.<br><br><b>Chemotherapy</b><br><br>Cytotoxic therapy may be used either prior to surgery ('neoadjuvanant' chemotherapy) to <span class="concept" data-cid="10193">downstage a primary lesion</span> or after surgery depending on the stage of the tumour, for example, if there is <span class="concept" data-cid="3968">axillary node disease - FEC-D is used in this situation</span>.</div>
The major breastfeeding contraindications tested in exams relate to drugs (see below). Other contraindications of note include:
*galactosaemia
*viral infections - this is controversial with respect to HIV in the developing world. This is because there is such an increased infant mortality and morbidity associated with bottle feeding that some doctors think the benefits outweigh the risk of HIV transmission
;Drug contraindications
The following drugs can be given to mothers who are breastfeeding:
*antibiotics: penicillins, cephalosporins, trimethoprim
*endocrine: glucocorticoids (avoid high doses), levothyroxine*
*epilepsy: sodium valproate, carbamazepine
*asthma: salbutamol, theophyllines
*psychiatric drugs: tricyclic antidepressants, antipsychotics**
*hypertension: beta-blockers, hydralazine
*anticoagulants: warfarin, heparin
*digoxin
The following drugs should be avoided:
*aspirin (Reye's Syndrome)
*cytotoxic drugs, methotrexate
*psychiatric drugs: benzodiazepines, lithium
*toxic to thyroid: amiodarone, carbimazole
*antibiotics: ciprofloxacin, tetracycline, chloramphenicol, sulphonamides
*sulfonylureas (hypoglycemia)
*the BNF advises that the amount is too small to affect neonatal hypothyroidism screening
**clozapine should be avoided
---
>PREGNANCY is WAR - BREAST ASPIRations
* Warfarin in [[Pregnancy|Prescribing in Pregnancy]] - Aspirin in Breast feeding are contraindicated
---
* The `combined pill is completely contraindicated` (category 4) according to the UKMEC guidelines for contraception use as it drastically reduces breast milk volume
---
<div id="notecontent">'Minor' breastfeeding problems<br><ul><li><span class="concept" data-cid="9813">frequent feeding in a breastfed infant is not alone a sign of low milk supply</span></li><li><span class="concept" data-cid="9816">nipple pain: may be caused by a poor latch</span> </li><li><span class="concept" data-cid="9814">blocked duct (‘milk bleb’)</span>: causes nipple pain when breastfeeding. Breastfeeding should continue. Advice should be sought regarding the positioning of the baby. Breast massage may also be tried</li><li>nipple candidiasis: <span class="concept" data-cid="9817">treatment for nipple candidiasis whilst breastfeeding should involve miconazole cream for the mother and nystatin suspension for the baby</span></li></ul><br><br><b>Mastitis</b><br><br>Mastitis affects around 1 in 10 breastfeeding women. The BNF advises to treat 'if systemically unwell, if nipple fissure present, if symptoms do not improve after 12-24 hours of effective milk removal of if culture indicates infection'. The first-line antibiotic is flucloxacillin for 10-14 days. Breastfeeding or expressing should continue during treatment.<br><br>If left untreated, mastitis may develop into a breast abscess. This generally requires incision and drainage.<br><br><br><b>Engorgement</b><br><br>Breast engorgement is one of the causes of breast pain in breastfeeding women. It usually occurs in the first few days after the infant is born and almost always affects both breasts. The pain or discomfort is typically worse just before a feed. Milk tends to not flow well from an engorged breast and the infant may find it difficult to attach and suckle. Fever may be present but usually settles within 24 hours. The breasts may appear red. Complications include blocked milk ducts, mastitis and difficulties with breastfeeding and, subsequently, milk supply. <br><br>Although it may initially be painful, hand expression of milk may help relieve the discomfort of engorgement.<br><br><br><b>Raynaud's disease of the nipple</b><br><br>In <span class="concept" data-cid="9812">Raynaud’s disease of the nipple, pain is often intermittent and present during and immediately after feeding</span>. Blanching of the nipple may be followed by cyanosis and/or erythema. Nipple pain resolves when nipples return to normal colour. <br><br>Options of treatment for Raynaud's disease of the nipple include advice on minimising exposure to cold, use of heat packs following a breastfeed, avoiding caffeine and stopping smoking. If symptoms persist consider specialist referral for a trial of oral nifedipine (off-license).</div>
!!!Breast abscess
In lactational women Staphylococcus aureus is the most common cause
* Typical presentation is with a tender, fluctuant mass in a lactating women
* Diagnosis and treatment is performed using USS and associated drainage of the abscess cavity. Antibiotics should also be administered
* Where there is necrotic skin overlying the abscess, the patient should undergo surgery
;Fibroadenomas
* More commonly seen in females age 16-24 and are an aberration of normal development.
* Mobile but firm breast lump that classically 'slips away' from the hand during examination leading to the nickname 'breast mouse.'
;Fat necrosis
* Up to 40% cases usually have a traumatic aetiology
* Physical features usually mimic carcinoma
* Mass may increase in size initially
`A low-grade fever is typical in bronchiolitis. Consider a diagnosis of pneumonia if the child has high fever (over 39°C) and/or persistently focal crackles.`
<div id="notecontent">Bronchiolitis is a condition characterised by acute bronchiolar inflammation. <span class="concept" data-cid="1278">Respiratory syncytial virus (RSV) is the pathogen in 75-80% of cases</span>. NICE released guidelines on bronchiolitis in 2015. Please see the link for more details.<br><br>Epidemiology<br><ul><li>most common cause of a serious lower respiratory tract infection in < 1yr olds (90% are 1-9 months, with a peak incidence of 3-6 months). Maternal IgG provides protection to newborns against RSV</li><li>higher incidence in winter</li></ul><br>Basics<br><ul><li>respiratory syncytial virus (RSV) is the pathogen in 75-80% of cases</li><li>other causes: mycoplasma, adenoviruses</li><li>may be secondary bacterial infection</li><li>more serious if bronchopulmonary dysplasia (e.g. Premature), <span class="concept" data-cid="2942">congenital heart disease</span> or cystic fibrosis</li></ul><br>Features<br><ul><li>coryzal symptoms (including mild fever) precede:</li><li>dry cough</li><li>increasing breathlessness</li><li>wheezing, fine inspiratory crackles (not always present)</li><li>feeding difficulties associated with increasing dyspnoea are often the reason for hospital admission</li></ul><br>NICE recommend immediate referral (usually by 999 ambulance) if they have any of the following:<br><ul><li>apnoea (observed or reported)</li><li>child looks seriously unwell to a healthcare professional</li><li>severe respiratory distress, for example <span id="concept_popover_id_2888" class="concept concept-0 trigger-link" data-cid="2888" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2888'>You've never been tested on this concept</div><br><div id='div_concept_rating2888' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(229,255,0)'>Importance: <b>55</b></span> </div>" data-original-title="In bronchiolitis, the presence of grunting necessitates immediate referral to hospital">grunting</span>, marked chest recession, or a respiratory rate of over 70 breaths/minute</li><li>central cyanosis</li><li>persistent oxygen saturation of less than 92% when breathing air.</li></ul><br>NICE recommend that clinicians 'consider' referring to hospital if any of the following apply:<br><ul><li>a respiratory rate of over 60 breaths/minute</li><li>difficulty with breastfeeding or inadequate oral fluid intake (50-75% of usual volume 'taking account of risk factors and using clinical judgement')</li><li>clinical dehydration.</li></ul><br>Investigation<br><ul><li>immunofluorescence of nasopharyngeal secretions may show RSV</li></ul><br>Management is largely <span class="concept" data-cid="4126">supportive</span><br><ul><li>humidified oxygen is given via a head box and is typically recommended if the oxygen saturations are persistently < 92%</li><li>nasogastric feeding may be needed if children cannot take enough fluid/feed by mouth</li><li>suction is sometimes used for excessive upper airway secretions</li></ul></div>
<div id="body_content">
Brugada syndrome is a form of inherited cardiovascular disease with may present with sudden cardiac death. It is inherited in an autosomal dominant fashion and has an estimated prevalence of 1:5,000-10,000. Brugada syndrome is more common in Asians.<br><br>Pathophysiology<br><ul><li>a large number of variants exist</li><li>around 20-40% of cases are caused by a <span class="concept" data-cid="9915">mutation in the SCN5A gene which encodes the myocardial sodium ion channel protein</span></li></ul><br>ECG changes<br><ul><li>convex ST segment elevation > 2mm in > 1 of V1-V3 followed by a negative T wave</li><li>partial right bundle branch block</li><li><span class="concept" data-cid="9698">the ECG changes may be more apparent following the administration of flecainide or ajmaline - this is the investigation of choice in suspected cases of Brugada syndrome</span></li></ul><br>Management<br><ul><li><span class="concept" data-cid="10822">implantable cardioverter-defibrillator</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg061b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg061.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg061b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg061c.jpg" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">ECG showing Brugada pattern, most marked in V1, which has an incomplete RBBB, a downsloping ST segment and an inverted T wave</div></div>
---
>BUDAGA syndrome
*Balloon like ST(convex) and T wave inversion on the same EKG
---
!!Buerger's disease (thromboangiitis obliterans)
is a small and medium vessel vasculitis that is strongly associated with smoking.
Features
* extremity ischaemia
** intermittent claudication
** ischaemic ulcers
* superficial thrombophlebitis
* Raynaud's phenomenon
<div id="body_content">
Bullous pemphigoid is an autoimmune condition causing sub-epidermal blistering of the skin. This is secondary to the development of antibodies against hemidesmosomal proteins BP180 and BP230<br><br>Bullous pemphigoid is more common in elderly patients. Features include<br><ul><li>itchy, tense blisters typically around flexures</li><li>the blisters usually heal without scarring</li><li>mouth is usually spared*</li></ul><br>Skin biopsy<br><ul><li>immunofluorescence shows IgG and C3 at the dermoepidermal junction</li></ul><br>Management<br><ul><li>referral to dermatologist for biopsy and confirmation of diagnosis</li><li>oral corticosteroids are the mainstay of treatment</li><li>topical corticosteroids, immunosuppressants and antibiotics are also used</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd042b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd042.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd042b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsx041.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a><span style="font-size:11px; color:LightGray;"> and with the kind permission of Prof Raimo Suhonen</span></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsx040.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a><span style="font-size:11px; color:LightGray;"> and with the kind permission of Prof Raimo Suhonen</span></td><td align="right"></td></tr></tbody></table></center><br>*in reality around 10-50% of patients have a degree of mucosal involvement. It would however be unusual for an exam question to mention mucosal involvement as it is seen as a classic differentiating feature between pemphigoid and pemphigus.</div>
!!Burkitt's lymphoma
is a high-grade B-cell neoplasm. There are two major forms:
* endemic (African) form: typically involves maxilla or mandible
* sporadic form: abdominal (e.g. ileo-caecal) tumours are the most common form. More common in patients with HIV
Burkitt's lymphoma is associated with the c-myc gene translocation, usually t(8:14). The Epstein-Barr virus (EBV) is strongly implicated in the development of the African form of Burkitt's lymphoma and to a lesser extent the sporadic form.
Microscopy findings
* 'starry sky' appearance: lymphocyte sheets interspersed with macrophages containing dead apoptotic tumour cells
Management is with chemotherapy. This tends to produce a rapid response which may cause 'tumour lysis syndrome'. Rasburicase (a recombinant version of urate oxidase, an enzyme which catalyses the conversion of uric acid to allantoin*) is often given before the chemotherapy to reduce the risk of this occurring. Complications of tumour lysis syndrome include:
* hyperkalaemia
* hyperphosphataemia
* hypocalcaemia
* hyperuricaemia
* acute renal failure
*allantoin is 5-10 times more soluble than uric acid, so renal excretion is more effective
!!!<center>''BURN PATIENT''</center>
<hr>
# As soon as the patient arrives, asses for ABC and CPR to be given accordingly.
# Remove all clothes and assess patient for extent and depth of burn as per “Rule of nine”
<center>
<img width=500 src="https://www.dropbox.com/s/7zhwrs5di05y6rz/burns1.png?raw=1">
</center>
<center>
<img width=400 src="https://www.dropbox.com/s/i28s4nynbmkd7jq/burns2.png?raw=1">
</center>
* ''First degree burn'' is epidermal burn alone which normally present as erythema/redness only. Typical example is sunburn. Burns due to any other cause is rarely a true first degree burn. They are very painful. There is no blister formation. It resolves in 3-5 days without scarring.
* ''Second degree burn'' involves the epidermis and a portion of dermis but not the complete dermis. This is further divided into superficial or deep.
* ''Second degree superficial'' is associated with involvement of epidermis & papillary dermis. It is characterized by severe pain, hyperaesthesia and blister formation.
* ''Second degree deep'' or deep dermal burn involves epidermis, papillary dermis & a part of reticular dermis. Wound is waxy white, soft & elastic.
* ''Third degree burn'' is also known as full thickness burn which involves the full thickness of skin, whole epidermis and dermis. It appears as tough, dry, inelastic, translucent & parchment like eschar.
* For the sake of convenience and practical utility burns are classified into two broad types:
* Any burn above 5% should be taken seriously.
* All the burns above 10% in infants and children and all burns above 15% in adults are considered major burns and need hospitalization and fluid resuscitation.
* For the sake of convenience burns can be classified as:
|!|!CHILDREN|<|!ADULT|<|
|!|!Partial Thickness|!Full Thickness|!Partial Thickness|!Full Thickness|
|!Minor| <10% TBSA | - | <15% TBSA | <2% TBSA |
|!Moderate| 10-15% TBSA | 1-3% TBSA | 15-25% TBSA | 2-10% TBSA |
|!Critical| >15% TBSA | >3% TBSA/Increased | >25% TBSA | >10% TBSA |
* ''Minor burns'' (treated on out-patient basis):
* Burns <15% in adults and <10% in children (excluding chemical, electrical burns and burns of face, hands and perineum).
* ''Moderate burns:''
* Require hospitalization for resuscitation and/or excisional therapy.
* Burns between 15-25% in adults.
* Full thickness burns between 3-10% in adults and 1-3% in children.
* ''Critical burns''
* Burns above 25% in adults, 15% in children and 5% in newborn and infants.
* Full thickness burns above 15% in adults and any extent in children.
* Electrical burns, Chemical burns, Respiratory burns, Burns associated with other injuries.
<hr>
<center>''Management''</center>
<hr>
* First weigh the patient.
* Start wide bore IV lines for infusing ringer lactate.
* Parkland formula: 4 X wt.(kg) X %TBSA burns.
* Monitor Hourly urine output, PR, BP, hydration
* Half of fluid calculated for first 24 hrs is given on 2nd day which may be supplemented with colloids.
* Oral fluids should be encouraged after initial resuscitation.
* Remove all constricting objects like rings bangles
* Eschorotomy or fasciotomy to be done in circumferential burns.
* Oxygen inhalation if evidence of inhalation injury.
* Intubate if needed
* Dress the wounds with SSD
* Give TT, preferably tetanus globulin.
* Admit all major burns in the ICU.
* Minor burns to be discharged with prescription of oral pain-killers and fluid intake and instructions for early return and follow up visits.
* Maintain the records in detail.
* Police information to be sent. Medico legal formalities to be completed.
* NPO till patient is out of shock, and then the patient can start oral sips only.
* Increase fluid and start semisolid diet after 24 to 48 hours once patient recovers from hypovolemic shock phase.
* Central line if needed.
* CBC, KFT, RBS
* No antibiotics are needed during initial period.
* Oral or parenteral analgesics and sedation
* Criteria for Transfer to Burn Unit
* Burns >20% BSA (or >10% if age <10 or >50)
* 3rd-degree burns >5% BSA or 2nd-degree burns >20% BSA
* Burns involving face, eyes, ears, hands, feet, or perineum
* Burns a/w significant electrical, chemical, inhalational, or traumatic injury
`can cause anterograde amnesia and mimic dementia in elderly`
Benzodiazepines enhance the effect of the inhibitory neurotransmitter gamma-aminobutyric acid (GABA) by increasing the <b>frequency</b> of chloride channels. They therefore are used for a variety of purposes:<br><ul><li>sedation</li><li>hypnotic</li><li>anxiolytic </li><li>anticonvulsant</li><li>muscle relaxant</li></ul><br>Patients commonly develop a tolerance and dependence to benzodiazepines and care should therefore be exercised on prescribing these drugs. The Committee on Safety of Medicines advises that benzodiazepines are only prescribed for a short period of time (2-4 weeks).<br><br>The BNF gives advice on how to withdraw a benzodiazepine. The dose should be withdrawn in steps of about 1/8 (range 1/10 to 1/4) of the daily dose every fortnight. A suggested protocol for patients experiencing difficulty is given:<br><ul><li>switch patients to the equivalent dose of diazepam</li><li>reduce dose of diazepam every 2-3 weeks in steps of 2 or 2.5 mg</li><li>time needed for withdrawal can vary from 4 weeks to a year or more</li></ul><br>If patients withdraw too quickly from benzodiazepines they may experience benzodiazepine withdrawal syndrome, a condition very similar to alcohol withdrawal syndrome. This may occur up to 3 weeks after stopping a long-acting drug. Features include:<br><ul><li>insomnia</li><li>irritability</li><li>anxiety</li><li>tremor</li><li>loss of appetite</li><li>tinnitus</li><li>perspiration</li><li>perceptual disturbances</li><li>seizures</li></ul><br><div class="alert alert-warning">GABA<sub>A</sub> drugs<br><ul><li>benzodiazipines increase the <b>frequency</b> of chloride channels</li><li>barbiturates increase the <b>duration</b> of chloride channel opening</li></ul><br><b>Freq</b>uently <b>Ben</b>d - <b>Dur</b>ing <b>Barb</b>eque<br><br>...or...<br><br>Barbi<b>durat</b>es increase <b>durat</b>ion & <b>Fre</b>ndodiazepines increase <b>fre</b>quency<br></div>
* Hydrocortisone is the treatment
<div id="notecontent">The most common causes of cancer in the UK are as follows*<br><ul><li>1. Breast</li><li>2. Lung</li><li>3. Colorectal</li><li>4. Prostate</li><li>5. Bladder</li><li>6. Non-Hodgkin's lymphoma</li><li>7. Melanoma</li><li>8. Stomach</li><li>9. Oesophagus</li><li>10. Pancreas</li></ul><br><div class="container"><div class="row"><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd524b.png" data-fancybox="gallery" data-caption="Chart showing the incidence of the most common cancers in the UK (source: Cancer Research UK 2017)"><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd524b.png" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd525b.png" data-fancybox="gallery" data-caption="Chart showing the incidence of the most common cancers in females (source: Cancer Research UK 2017)"><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd525b.png" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd526b.png" data-fancybox="gallery" data-caption="Chart showing the incidence of the most common cancers in males (source: Cancer Research UK 2017)"><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd526b.png" alt=""></a></div></div></div><br><br>The most common causes of death from cancer in the UK are as follows:<br><ul><li>1. Lung </li><li>2. Colorectal</li><li>3. Breast</li><li>4. Prostate</li><li>5. Pancreas</li><li>6. Oesophagus</li><li>7. Stomach</li><li>8. Bladder</li><li>9. Non-Hodgkin's lymphoma</li><li>10. Ovarian</li></ul><br>*excludes non-melanoma skin cancer</div>
* Small Cell Ca - Surgery+Chemo
* Non Small Cell -
* Hodgkins
** Combo chemo + Radiation
** BMT in relapse
* NHL
** Biologics(Rituximab) in non-aggressive type(Follicular Lymphoma)
** Combo chemo + Radiation + Biologics if firstline fails
** Combo chemo + Biologics or Radiation + BMT if aggressive type(B cell)
** BMT if young and B symptoms present
* Liver mets is usually palliative(embolization+chemo) - doesn't respond to radiation
!!!<center>''CANDIDA CNS INFECTIONS''</center>
<hr>
* ''Initial therapy''
* Liposomal amphotericin B 5 mg/kg IV daily with or without flucytosine 25 mg/kg orally four times daily for several weeks, followed by step-down therapy with fluconazole once the patient has responded to initial therapy.
* ''Step-down therapy''
* Fluconazole 400 to 800 mg (6 to 12 mg/kg) orally daily
* Treat until all signs and symptoms, cerebrospinal fluid abnormalities, and radiographic abnormalities have resolved.
* Removal of intraventricular devices and other CNS devices is recommended.
Community acquired pneumonia (CAP) may be caused by the following infectious agents:
* Streptococcus pneumoniae (accounts for around 80% of cases)
* Haemophilus influenzae
* Staphylococcus aureus: commonly after the 'flu
* atypical pneumonias (e.g. Due to Mycoplasma pneumoniae)
* viruses
Klebsiella pneumoniae is classically in alcoholics
''Streptococcus pneumoniae (pneumococcus)'' is the most common cause of community-acquired pneumonia
Characteristic features of pneumococcal pneumonia
* rapid onset
* high fever
* pleuritic chest pain
* herpes labialis
|>|!CURB-65 Score|
|1 pt each|''C''onfusion, ''U''rea >20mg/dL, ''R''R >30, S''B''P <90, DBP < 60, age > ''65''|
|> 2|Consider Outpatient Rx|
|= 2|Short Inpatient Hospitalization or <br>Close Outpatient Supervision|
|< 2|Hospitalize, Consider ICU|
!!Carbamazepine
is chemically similar to the tricyclic antidepressant drugs. It is most commonly used in the treatment of epilepsy, particularly partial seizures, where carbamazepine remains a first-line medication. Other uses include
* trigeminal neuralgia
* bipolar disorder
Mechanism of action
* binds to sodium channels increases their refractory period
Adverse effects
* P450 enzyme inducer
* drowsiness
* dizziness and ataxia
* visual disturbances (especially diplopia)
* headache
* Steven-Johnson syndrome
* leucopenia and agranulocytosis
* hyponatraemia secondary to syndrome of inappropriate ADH secretion
Carbamazepine is known to exhibit autoinduction, hence when patients start carbamazepine they may see a return of seizures after 3-4 weeks of treatment.
---
>PhenyToin like: Drowsiness - Dizziness - Diplopia - Ataxia
>ValProate like: HypoNatremia
>Other: HeadAche - SJS - LeucoPenia - AgranuloCytosis
---
> EpiLepsyRx blasts Marrow
*PhenyToin: AplasticAnemia
*ValProate: ThromboCytopenia
*CarbamaZapine: Leucopenia - AgranuloCytosis
---
>CARBS are AGRI products
*CARBamazapine and CARBimazole cause AGRAnulocytosis
---
<div id="body_content">
Carbon monoxide has a high affinity for haemoglobin and myoglobin resulting in a left-shift of the oxygen dissociation curve and tissue hypoxia. There are approximately 50 per year deaths from accidental carbon monoxide poisoning in the UK.<br><br>Pathophysiology<br><ul><li><span class="concept" data-cid="9884">in carbon monoxide poisoning the oxygen saturation of haemoglobin decreases leading to an early plateau in the oxygen dissociation curve</span></li></ul><br>Questions may hint at badly maintained housing e.g. student houses.<br><br>Features of carbon monoxide toxicity <br><ul><li><span class="concept" data-cid="774">headache: 90% of cases</span></li><li>nausea and vomiting: 50%</li><li>vertigo: 50%</li><li>confusion: 30%</li><li>subjective weakness: 20%</li><li>severe toxicity: 'pink' skin and mucosae, hyperpyrexia, arrhythmias, extrapyramidal features, coma, death</li></ul><br>Investigations<br><ul><li><span class="concept" data-cid="10664">pulse oximetry may be falsely high due to similarities between oxyhaemoglobin and carboxyhaemoglobin</span></li><li>therefore a venous or arterial blood gas should be taken</li><li>typical carboxyhaemoglobin levels<ul><li>< 3% non-smokers</li><li><span class="concept" data-cid="9298">< 10% smokers</span></li><li>10 - 30% symptomatic: headache, vomiting</li><li>> 30% severe toxicity</li></ul></li><li>an ECG is a useful supplementary investgation to look for cardiac ischaemia</li></ul><br>Management<br><ul><li>patients with suspected carbon monoxide poisoning should be assessed in the emergency department</li><li>100% high-flow oxygen via a non-rebreather mask<ul><li>from a physiological perspective, this decreases the half-life of carboxyhemoglobin (COHb) </li><li>should be administered as soon as possible, with treatment continuing for a minimum of six hours </li><li><span class="concept" data-cid="2564">target oxygen saturations are 100%</span></li><li>treatment is generally continued until all symptoms have resolved, rather than monitoring CO levels</li></ul></li><li>hyperbaric oxygen<ul><li>due to the small number of cases the evidence base is limited, but there is some evidence that long-term outcomes may be better than standard oxygen therapy for more severe cases</li><li>therefore, discussion with a specialist should be considered for more severe cases (e.g. levels > 25%)</li><li>in 2008, the Department of Health publication 'Recognising Carbon Monoxide Poisoning' also listed loss of consciousness at any point, neurological signs other than headache, myocardial ischaemia or arrhythmia and pregnancy as indications for hyperbaric oxygen</li></ul></li></ul></div>
|!Carcinogen|!Cancer|
|Aflatoxin (produced by Aspergillus)|Liver - (hepatocellular carcinoma)|
|Aniline dyes|Bladder (transitional cell carcinoma)|
|Asbestos|Mesothelioma and bronchial carcinoma|
|Nitrosamines|Oesophageal and gastric cancer|
|Vinyl chloride|Hepatic angiosarcoma|
---
>ANIL URINE problem
*ANILine dyes-URINARY bladder Ca
---
>VINYL records - ANGEL like voice
*VINYL chloride - Hepatic ANGIOsarcoma
---
<div id="body_content">
Cardiac tamponade is characterized by the accumulation of pericardial fluid under pressure. <br><br>Classical features - <span class="concept" data-cid="1280">Beck's triad</span>:<br><ul><li>hypotension</li><li>raised JVP</li><li>muffled heart sounds</li></ul><br>Other features:<br><ul><li>dyspnoea</li><li>tachycardia</li><li>an absent Y descent on the JVP - this is due to the limited right ventricular filling</li><li><span class="concept" data-cid="4028">pulsus paradoxus</span> - an abnormally large drop in BP during inspiration</li><li>Kussmaul's sign - much debate about this</li><li>ECG: <span class="concept" data-cid="9201">electrical alternans</span></li></ul><br>The key differences between constrictive pericarditis and cardiac tamponade are summarised in the table below:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Cardiac tamponade</b></th><th><b>Constrictive pericarditis</b></th></tr></thead><tbody><tr><td><b>JVP</b></td><td>Absent Y descent</td><td>X + Y present</td></tr><tr><td><b>Pulsus paradoxus</b></td><td>Present</td><td>Absent</td></tr><tr><td><b>Kussmaul's sign</b></td><td>Rare</td><td>Present</td></tr><tr><td><b>Characteristic features</b></td><td></td><td>Pericardial calcification on CXR</td></tr></tbody></table></div><br><div class="alert alert-warning">A commonly used mnemonic to remember the absent Y descent in cardiac tamponade is TAMponade = TAMpaX<br></div><br>Management<br><ul><li><span class="concept" data-cid="1444">urgent pericardiocentesis</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg066b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg066.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg066b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg066c.png" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">An ECG demonstrating electrical alternans. Note the alternation of QRS complex amplitude between beats.</div></div>
<center>
<$button class="tile-link"><$action-navigate $to="Atrial Fib/Flutter Protocol"/>Atrial Fib/Flutter Protocol</$button>
<$button class="tile-link"><$action-navigate $to="Cardiomyopathy"/>Cardiomyopathy</$button>
<$button class="tile-link"><$action-navigate $to="Heart Failure Protocol"/>Acute Heart Failure Protocol</$button>
<$button class="tile-link"><$action-navigate $to="Arrhythmias"/>Arrhythmia</$button>
<$button class="tile-link"><$action-navigate $to="Bradycardia"/>Bradycardia</$button>
<$button class="tile-link"><$action-navigate $to="Bradycardia Protocol"/>Bradycardia Protocol</$button>
<$button class="tile-link"><$action-navigate $to="Chest Pain"/>Chest Pain</$button>
<$button class="tile-link"><$action-navigate $to="DVT Protocol"/>DVT Protocol</$button>
<$button class="tile-link"><$action-navigate $to="Arrhythmia"/>Irregular Pulse</$button>
<$button class="tile-link"><$action-navigate $to="Palpitations"/>Palpitations</$button>
<$button class="tile-link"><$action-navigate $to="Pulmonary Embolism Protocol"/>Pulmonary Embolism Protocol</$button>
<$button class="tile-link"><$action-navigate $to="Syncope"/>Syncope</$button>
<$button class="tile-link"><$action-navigate $to="Shock Protocol"/>Shock Protocol</$button>
<$button class="tile-link"><$action-navigate $to="STEMI Protocol"/>STEMI Protocol</$button>
<$button class="tile-link"><$action-navigate $to="SVT Protocol"/>SVT Protocol</$button>
<$button class="tile-link"><$action-navigate $to="Tachycardia"/>Tachycardia</$button>
<$button class="tile-link"><$action-navigate $to="VT Protocol"/>VT Protocol</$button>
</center>
<div id="body_content">
The old classification of dilated [[DCM]], restricted and hypertrophic cardiomyopathy has been largely abandoned due to the high degree of overlap. The latest classification of cardiomyopathy by the WHO and American Heart Association reflect this.<br><br>The tables below shows a very limited set of exam related facts for the various cardiomyopathies:<br><br><b>Primary cardiomyopathies</b> - predominately involving the heart<br><br><b>Genetic</b> - both conditions listed below are autosomal dominant. An implantable cardioverter-defibrillator is often inserted to reduce the incidence of sudden cardiac death.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Type of cardiomyopathy</th><th>Selected points</th></tr></thead><tbody><tr><td>Hypertrophic obstructive cardiomyopathy</td><td><span class="concept" data-cid="7768">Leading cause of sudden cardiac death in young athletes</span><br><span class="concept" data-cid="7766">Usually due to a mutation in the gene encoding β-myosin heavy chain protein</span><br>Common cause of sudden death<br><span class="concept" data-cid="7767">Echo findings include MR, systolic anterior motion (SAM) of the anterior mitral valve and asymmetric septal hypertrophy</span></td></tr><tr><td>Arrhythmogenic right ventricular dysplasia</td><td>Right <span class="concept" data-cid="7769">ventricular myocardium is replaced by fatty and fibrofatty tissue</span><br><span class="concept" data-cid="7770">Around 50% of patients have a mutation of one of the several genes which encode components of desmosome</span><br><span class="concept" data-cid="7771">ECG abnormalities in V1-3, typically T wave inversion</span>. An <span class="concept" data-cid="7772">epsilon wave</span> is found in about 50% of those with ARV - this is best described as a terminal notch in the QRS complex</td></tr></tbody></table></div><br><b>Mixed</b> - rather confusingly most of the causes of dilated and restrictive cardiomyopathy are now listed separately in the 'secondary' causes. This category servers as a reminder that many patients will have a genetic predisposition to cardiomyopathy which is then triggered by the secondary process, hence the 'mixed' category<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Type of cardiomyopathy</th><th>Selected causes/points</th></tr></thead><tbody><tr><td>Dilated cardiomyopathy [[DCM]]</td><td>Classic causes include<br><ul><li>alcohol</li><li>Coxsackie B virus</li><li>wet beri beri</li><li>doxorubicin</li></ul></td></tr><tr><td>Restrictive cardiomyopathy</td><td>Classic causes include<br><ul><li>amyloidosis</li><li>post-radiotherapy</li><li>Loeffler's endocarditis</li></ul></td></tr></tbody></table></div><br><b>Acquired</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th>Type of cardiomyopathy</th><th>Selected points</th></tr></thead><tbody><tr><td>Peripartum cardiomyopathy</td><td>Typical develops between last month of pregnancy and 5 months post-partum<br>More common in older women, greater parity and multiple gestations</td></tr><tr><td>Takotsubo cardiomyopathy</td><td><span class="concept" data-cid="7773">'Stress'</span>-induced cardiomyopathy e.g. patient just found out family member dies then develops chest pain and features of heart failure<br><span class="concept" data-cid="7774">Transient, apical ballooning of the myocardium</span><br>Treatment is supportive</td></tr></tbody></table></div><br><br><b>Secondary cardiomyopathies</b>- pathological myocardial involvement as part of a generalized systemic disorder<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid4"><thead><tr><th>Type of cardiomyopathy</th><th>Selected causes/points</th></tr></thead><tbody><tr><td>Infective</td><td>Coxsackie B virus<br>Chagas disease</td></tr><tr><td>Infiltrative</td><td>Amyloidosis</td></tr><tr><td>Storage</td><td>Haemochromatosis</td><td></td></tr><tr><td>Toxicity</td><td><span class="concept" data-cid="6221">Doxorubicin</span><br>Alcoholic cardiomyopathy</td></tr><tr><td>Inflammatory (granulomatous)</td><td>Sarcoidosis</td></tr><tr><td>Endocrine</td><td>Diabetes mellitus<br>Thyrotoxicosis<br>Acromegaly</td></tr><tr><td>Neuromuscular</td><td>Friedreich's ataxia<br>Duchenne-Becker muscular dystrophy<br>Myotonic dystrophy</td></tr><tr><td>Nutritional deficiencies</td><td>Beriberi (thiamine)</td></tr><tr><td>Autoimmune</td><td>Systemic lupus erythematosis</td></tr></tbody></table></div></div>
---
!!!<center>''CARDIOMYOPATHY''</center>
<hr>
<center>''DCM''</center>
<hr>
* CXR: moderate to marked cardiomegaly, + pulmonary edema & pleural effusions, ECG: may see PRWP, Q waves, or BBB; low voltage; AF, Echo: LV dilatation, dec EF, regional or global LV HK, + RV HK, + mural thrombi
* Labs:TFTs, iron studies, HIV, SPEP, ANA; Stress test to r/o ischemia, Coronary angiography to r/o CAD if risk factors, h/o angina, Qw MI on ECG, equivocal ETT; consider CT angiography, Endomyocardial biopsy, Cardiac MRI;
* Treatment: standard HF Rx
<hr>
<center>''HCM''</center>
<hr>
* CXR: cardiomegaly (LV and LA), ECG: LVH, anterolateral and inferior pseudo-Qw, + apical giant TWI, Echo: any wall seg ≥ 15 mm, MRI: hypertrophy, Cardiac cath;
* Treatment: Heart failure no inotropes/chronotropes: BB, CCB (verapamil), disopyramide. Careful use of diuretics. Vasodilators only if systolic dysfxn. Avoid digoxin. If refractory to drug therapy and there is obstructive physiology then Alcohol septal ablation or Surgical myectomy; Acute HF: can be precip. by dehydration or tachycardia; Rx w/ fluids, BB, phenylephrine; AF: rate control with BB, maintain SR with disopyramide or amiodarone; Counsel to avoid dehydration, extreme exertion, Endocarditis prophylaxis no longer recommended, First-degree relatives: periodic screening w/ echo (as timing of HCMP onset variable)
<hr>
<center>''RCM''</center>
<hr>
* CXR: normal ventricular chamber size, enlarged atria, + pulmonary congestion, ECG: low voltage, pseudoinfarction pattern (Qw), + arrhythmias, Echo: symmetric wall thickening, biatrial enlarge., mural thrombi, + cavity oblit. w/ diast dysfxn: inc early diast (E) and dec late atrial (A) filling, inc E/A ratio, dec decel. Time, Cardiac MRI, Cardiac catheterization, Endomyocardial biopsy if suspect infiltrative process;
* Treatment (in addition to Rx’ing underlying disease), Gentle diuresis. May not tolerate CCB or other vasodilators. Control HR and maintain SR (important for diastolic filling). Dig proarrhythmic in amyloid. Anticoagulation (particularly with AF or low CO), Transplantation for refractory cases
<div id="notecontent">Carpal tunnel syndrome is caused by compression of median nerve in the carpal tunnel.<br><br>History<br><ul><li>pain/pins and needles in thumb, index, middle finger</li><li>unusually the symptoms may 'ascend' proximally</li><li>patient shakes his hand to obtain relief, classically at night</li></ul><br>Examination<br><ul><li>weakness of thumb abduction (abductor pollicis brevis)</li><li>wasting of thenar eminence (NOT hypothenar)</li><li>Tinel's sign: tapping causes paraesthesia</li><li>Phalen's sign: flexion of wrist causes symptoms</li></ul><br>Causes<br><ul><li>idiopathic</li><li>pregnancy</li><li>oedema e.g. heart failure</li><li>lunate fracture</li><li>rheumatoid arthritis</li></ul><br>Electrophysiology<br><ul><li>motor + sensory: prolongation of the action potential</li></ul><br>Treatment<br><ul><li>corticosteroid injection</li><li>wrist splints at night</li><li>surgical decompression (flexor retinaculum division)</li></ul></div>
`More proximal symptoms would be expected with a C6 entrapment neuropathy e.g. weakness of the biceps muscle or reduced biceps reflex.`
---
>Tinel Tapping - Phalen Phlexion(flexion)
---
Cataplexy describes the sudden and transient loss of muscular tone caused by strong emotion (e.g. laughter, being frightened). Around two-thirds of patients with narcolepsy have cataplexy.
Features range from buckling knees to collapse.
Cat scratch disease is generally caused by the Gram negative rod Bartonella henselae
Features
* fever
* history of a cat scratch
* regional lymphadenopathy
* headache, malaise
!!Calcium channel blockers
are primarily used in the management of cardiovascular disease. Voltage-gated calcium channels are present in myocardial cells, cells of the conduction system and those of the vascular smooth muscle. The various types of calcium channel blockers have varying effects on these three areas and it is therefore important to differentiate their uses and actions.
<div id="body_content"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Examples</b></th><th><b>Indications & notes</b></th><th><b>Side-effects and cautions</b></th></tr></thead><tbody><tr><td><b>Verapamil</b></td><td>Angina, hypertension, arrhythmias <br><br>Highly negatively inotropic<br><br>Should not be given with beta-blockers as may cause <span class="concept" data-cid="6529">heart block</span></td><td><span class="concept" data-cid="6530">Heart failure</span>, <span class="concept" data-cid="5683">constipation</span>, <span class="concept" data-cid="6528">hypotension</span>, <span class="concept" data-cid="6527">bradycardia</span>, <span class="concept" data-cid="6542">flushing</span></td></tr><tr><td><b>Diltiazem</b></td><td>Angina, hypertension <br><br>Less negatively inotropic than verapamil but <span class="concept" data-cid="6538">caution</span> should still be exercised when patients have heart failure or are taking beta-blockers</td><td><span class="concept" data-cid="6536">Hypotension</span>, <span class="concept" data-cid="6535">bradycardia</span>, <span class="concept" data-cid="6537">heart failure</span>, <span class="concept" data-cid="6534">ankle swelling</span></td></tr><tr><td><b>Nifedipine, amlodipine, felodipine <br>(dihydropyridines)</b></td><td>Hypertension, angina, Raynaud's<br><br>Affects the peripheral vascular smooth muscle more than the myocardium and therefore do not result in worsening of heart failure</td><td><span class="concept" data-cid="6531">Flushing</span>, <span class="concept" data-cid="6532">headache</span>, <span class="concept" data-cid="6533">ankle swelling</span></td></tr></tbody></table></div></div>
<center>
<img src="https://www.dropbox.com/s/xyq16ofzmzkwdlw/HTN%20Mx2.png?raw=1">
</center>
---
>~VeraDil on DIL
*Bradycardia - Hypotension - Heart failure
---
>Vera on commode - Constipation and Flush
---
>Dil cause ANKIL swelling<br>
---
>Dipines FLUSH - Flush - Head flush (Headache) - Ankle flush (swelling)<br>
---
<div id="notecontent"><i>Clostridium difficile</i> is a <span class="concept" data-cid="1867">Gram positive rod</span> often encountered in hospital practice. It produces an exotoxin which causes intestinal damage leading to a syndrome called pseudomembranous colitis. <i>Clostridium difficile</i> develops when the normal gut flora are suppressed by broad-spectrum antibiotics(Clindamycin, Cephalosporins, Fluoroquinolones). <span id="concept_popover_id_987" class="concept concept-0 trigger-link" data-cid="987" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative987'>You've never been tested on this concept</div><br><div id='div_concept_rating987' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(234,255,0)'>Importance: <b>54</b></span> </div>" data-original-title="Clindamycin treatment is associated with a high risk of <i>Clostridium difficile</i>">Clindamycin</span> is historically associated with causing <i>Clostridium difficile</i> but the aetiology has evolved significantly over the past 10 years. Second and third generation <span class="concept" data-cid="431">cephalosporins</span> are now the leading cause of <i>Clostridium difficile</i>.<br><br>Other than antibiotics, risk factors include:<br><ul><li><span id="concept_popover_id_1773" class="concept concept-3-u trigger-link" data-cid="1773" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1773'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating1773' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(86,255,0)'>Importance: <b>83</b></span> </div>" data-original-title="PPIs are a risk factor for <i>Clostridium difficile</i> infection ">proton pump inhibitors</span></li></ul><br>Features<br><ul><li>diarrhoea</li><li>abdominal pain</li><li>a <b>raised white blood cell count</b> is characteristic</li><li>if severe toxic megacolon may develop</li></ul><br>Diagnosis<br><ul><li>is made by detecting <i>Clostridium difficile</i> <b>toxin</b> (CDT) in the stool</li><li><i>Clostridium difficile</i> <span class="concept" data-cid="9585"><b>antigen</b> positivity only shows exposure to the bacteria, rather than current infection</span></li></ul><br>Management<br><ul><li><b>first-line therapy is <span class="concept" data-cid="1524">oral metronidazole</span></b> for 10-14 days</li><li>if <span class="concept" data-cid="3477">severe</span> or not responding to metronidazole then <b><span class="concept" data-cid="4516">oral vancomycin</span></b> may be used<ul><li>recurrent infection occurs in around 20% of patients, increasing to 50% after their second episode</li></ul></li><li><span class="concept" data-cid="1518">fidaxomicin</span> may also be used for patients who are not responding , particularly those with multiple co-morbidities</li><li>for life-threatening infections a combination of <span class="concept" data-cid="1489">oral vancomycin and intravenous metronidazole</span> should be used</li></ul><br>Other therapies<br><ul><li><span class="concept" data-cid="2406">bezlotoxumab</span> is a monoclonal antibody which targets Clostridium difficile toxin B - it is not in widespread use</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb133b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb133.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb133b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Elderly lady with infectious colitis secondary to <i>Clostridium difficile</i>. On the abdominal film note the loss of bowel wall architecture and thumb-printing consistent with colitis. The CT from the same patient is enhanced by oral contrast. There is moderate free fluid in pelvis and peritoneum. The colon is oedematous throughout with enhancing walls, but of normal calibre. The sigmoid colon is smooth and featureless. Small bowel, liver, spleen, kidneys, adrenals and pancreas are normal.</div></div>
!!Coeliac disease
<div id="body_content">
is an autoimmune condition caused by <span class="concept" data-cid="4790">sensitivity to the protein gluten</span>. It is thought to affect around 1% of the UK population. Repeated exposure leads to <span class="concept" data-cid="8244">villous atrophy which in turn causes malabsorption</span>. Conditions associated with coeliac disease include dermatitis herpetiformis (a vesicular, pruritic skin eruption) and autoimmune disorders (type 1 diabetes mellitus and autoimmune hepatitis). It is strongly associated with <span class="concept" data-cid="1531">HLA-DQ2 (95% of patients)</span> and HLA-DQ8 (80%).<br><br>In 2009 NICE issued guidelines on the investigation of coeliac disease. They suggest that the following patients should be screened for coeliac disease:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Signs and symptoms</b></th><th><b>Conditions</b></th></tr></thead><tbody><tr><td><ul><li>Chronic or intermittent diarrhoea</li><li>Failure to thrive or faltering growth (in children)</li><li>Persistent or unexplained gastrointestinal symptoms including nausea and vomiting</li><li>Prolonged fatigue ('tired all the time')</li><li>Recurrent abdominal pain, cramping or distension</li><li>Sudden or unexpected weight loss</li><li>Unexplained iron-deficiency anaemia, or other unspecified anaemia</li></ul></td><td><ul><li><span class="concept" data-cid="5290">Autoimmune thyroid disease</span></li><li>Dermatitis herpetiformis</li><li>Irritable bowel syndrome</li><li><span class="concept" data-cid="5290">Type 1 diabetes</span></li><li>First-degree relatives (parents, siblings or children) with coeliac disease</li></ul></td></tr></tbody></table></div><br>Complications<br><ul><li><span class="concept" data-cid="7520">anaemia</span>: <span class="concept" data-cid="9516">iron, folate and vitamin B12 deficiency</span> (folate deficiency is more common than vitamin B12 deficiency in coeliac disease)</li><li><span class="concept" data-cid="7521">hyposplenism</span></li><li><span class="concept" data-cid="7522">osteoporosis</span>, <span class="concept" data-cid="7525">osteomalacia</span></li><li><span class="concept" data-cid="7523">lactose intolerance</span></li><li><span class="concept" data-cid="1418">enteropathy-associated T-cell lymphoma of small intestine</span></li><li><span class="concept" data-cid="7524">subfertility</span>, unfavourable pregnancy outcomes</li><li>rare: oesophageal cancer, other malignancies</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb077b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb077.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb077b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Duodenal biopsy from a patient with coeliac disease. Complete atrophy of the villi with flat mucosa and marked crypt hyperplasia. Intraepithelial lymphocytosis. Dense mixed inflammatory infiltrate in the lamina propria.<br></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb078b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb078.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb078b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Duodenal biopsy from a patient with coeliac disease. Flat mucosa with hyperplastic crypts and dense cellular infiltrate in the lamina propria. Increased number of intraepithelial lymphocytes and vacuolated superficial epithelial cell vacuolated superficial epithelial cells. Higher magnification image on the right.<br></div></div>
!!!<center>''CENTRAL LINE PLACEMENT''</center>
<hr>
<iframe width="806" height="453" src="https://www.youtube.com/embed/hmEMUCaU1y0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<center>''Ultrasound Guidance For Central Lines''
<iframe width="645" height="484" src="https://www.youtube.com/embed/_RHRy64jQ6s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</center>
The cerebral perfusion pressure (CPP) is defined as being the net pressure gradient causing blood flow to the brain. The CPP is tightly autoregulated to maximise cerebral perfusion. A sharp rise in CPP may result in a rising ICP, a fall in CPP may result in cerebral ischaemia. It may be calculated by the following equation:
CPP= Mean arterial pressure - Intra cranial pressure
Following trauma, the CPP has to be carefully controlled and the may require invasive monitoring of the ICP and MAP.
<div id="notecontent">The UK has a well established cervical cancer screening program which is estimated to prevent 1,000-4,000 deaths per year. <span class="concept" data-cid="9755">The main aim of cervical screening is to detect pre-malignant changes rather than to detect cancer</span>. It should be noted that <span class="concept" data-cid="306">cervical adenocarcinomas, which account for around 15% of cases, are frequently undetected by screening</span><br><br><b>Who is screened and how often?</b><br><br>A smear test is offered to all women between the ages of 25-64 years<br><ul><li><span id="concept_popover_id_305" class="concept concept-0 trigger-link" data-cid="305" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative305'>You've never been tested on this concept</div><br><div id='div_concept_rating305' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(158,255,0)'>Importance: <b>69</b></span> </div>" data-original-title="Cervical cancer screening
- 25-49 years: 3-yearly
- 50-64 years: 5-yearly">25-49 years: 3-yearly screening</span></li><li><span id="concept_popover_id_305" class="concept concept-0 trigger-link" data-cid="305" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative305'>You've never been tested on this concept</div><br><div id='div_concept_rating305' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(158,255,0)'>Importance: <b>69</b></span> </div>" data-original-title="Cervical cancer screening
- 25-49 years: 3-yearly
- 50-64 years: 5-yearly">50-64 years: 5-yearly screening</span></li><li><span class="concept" data-cid="9752">cervical screening cannot be offered to women over 64 (unlike breast screening, where patients can self refer once past screening age)</span></li></ul><br>Special situations<br><ul><li>cervical screening in <span class="concept" data-cid="7878">pregnancy is usually delayed until 3 months post-partum</span> unless missed screening or previous abnormal smears.</li><li><span class="concept" data-cid="9756">women who have never been sexually active have very low risk of developing cervical cancer therefore they may wish to opt-out of screening</span></li></ul><br><b>How is performed?</b><br><br>There is currently a move away from traditional Papanicolaou (Pap) smears to liquid-based cytology (LBC). Rather than smearing the sample onto a slide the sample is either rinsed into the preservative fluid or the brush head is simply removed into the sample bottle containing the preservative fluid.<br><br>Advantages of LBC includes<br><ul><li>reduced rate of inadequate smears</li><li>increased sensitivity and specificity</li></ul><br>It is said that the best time to take a cervical smear is around mid-cycle. Whilst there is limited evidence to support this it is still the current advice given out by the NHS.</div>
<div id="body_content">
Around 50% of cases of cervical cancer occur in women under the age of 45 years, with incidence rates for cervical cancer in the UK are highest in people aged 25-29 years, according to Cancer Research UK. It may be divided into:<br><ul><li>squamous cell cancer (80%)</li><li>adenocarcinoma (20%)</li></ul><br>Features<br><ul><li>may be detected during routine cervical cancer screening</li><li>abnormal vaginal bleeding: postcoital, intermenstrual or postmenopausal bleeding</li><li>vaginal discharge</li></ul><br><span class="concept" data-cid="7120"><b>Human papillomavirus (HPV)</b>, particularly serotypes 16,18 & 33</span> is by far the most important factor in the development of cervical cancer. Other risk factors include:<br><ul><li><span class="concept" data-cid="1774">smoking</span></li><li><span class="concept" data-cid="7121">human immunodeficiency virus</span></li><li><span class="concept" data-cid="7126">early first intercourse</span>, <span class="concept" data-cid="7122">many sexual partners</span></li><li><span class="concept" data-cid="7123">high parity</span></li><li><span class="concept" data-cid="7124">lower socioeconomic status</span></li><li><span class="concept" data-cid="7125">combined oral contraceptive pill</span>*</li></ul><br>Mechanism of HPV causing cervical cancer<br><ul><li>HPV 16 & 18 produces the oncogenes E6 and E7 genes respectively</li><li>E6 inhibits the p53 tumour suppressor gene</li><li>E7 inhibits RB suppressor gene</li></ul><br>*the strength of this association is sometimes debated but a large study published in the Lancet (2007 Nov 10;370(9599):1609-21) confirmed the link</div>
<div id="body_content">
The table below outlines the management of abnormal cervical smears (around 5% of all smears). Cervical intraepithelial neoplasia is abbreviated to CIN<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Result</th><th>Management</th></tr></thead><tbody><tr><td>Borderline or mild dyskaryosis</td><td>The original sample is <span class="concept" data-cid="307">tested for HPV</span>*<br><ul><li>if <span class="concept" data-cid="8285">negative</span> the patient goes back to <span class="concept" data-cid="8287">routine recall</span></li><li>if <span class="concept" data-cid="8286">positive</span> the patient is referred for <span class="concept" data-cid="8288">colposcopy</span></li></ul></td></tr><tr><td>Moderate dyskaryosis</td><td>Consistent with CIN II. Refer for <span class="concept" data-cid="8289">urgent colposcopy</span> (within 2 weeks)</td></tr><tr><td>Severe dyskaryosis</td><td>Consistent with CIN III. <span class="concept" data-cid="8290">Refer for urgent colposcopy</span> (within 2 weeks**)</td></tr><tr><td>Suspected invasive cancer</td><td>Refer for <span class="concept" data-cid="8291">urgent colposcopy</span> (within 2 weeks)</td></tr><tr><td>Inadequate</td><td><span class="concept" data-cid="8292">Repeat smear</span> - if persistent (3 inadequate samples), <span class="concept" data-cid="8293">assessment by colposcopy</span></td></tr></tbody></table></div><br>Women who have been treated for CIN1, CIN2, or CIN3 should be invited <span class="concept" data-cid="8588">6 months</span> after treatment for ‘test of cure’ repeat cytology in the community. <br><br>*high-risk subtypes of HPV such as 16,18 & 33<br><br>**please see NHS Cervical Screening Programme link for more details about this recommendation</div>
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Tuberculosis"/>TUBERCULOSIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="COPD Exacerbation"/>COPD EXACERBATION</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Pneumonia"/>PNEUMONIA</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Lung Abscess-Empyema"/>LUNG ABSCESS-EMPYEMA</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Influenza"/>INFLUENZA</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Infective Endocarditis"/>INFECTIVE ENDOCARDITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Mediastinitis"/>MEDIASTINITIS</$button>
</center>
!!!<center>''CHEST PAIN''</center>
<hr>
* Take a proper history and vitals first
* Vitals unstable: send to ICU immediately
* Rule out MI
* ''Chances of MI more if pain:''
* Intense and constant for 30-60 min
* Substernal, and often radiates up to the neck, shoulder, and jaw, and down the left arm
* Usually described as a substernal pressure sensation that also may be characterized as squeezing, aching, burning, or even sharp
* Dyspnea, diaphoresis, ass with exertion
* Associated with nausea, diaphoresis, dyspnea, and palpitations.
* Prior MI; pain decreased with NTG or rest
* In some patients, the symptom is epigastric, with a feeling of indigestion or of fullness and gas
* Any past H/O CAD, MI, PCI/CABG, DM, HTN, Obesity, Hypercholesterolemia, Smoker, age>55
* Get an ECG STAT (within 10 min)
* Send ECG to Sumanth Mj or Dr Chitanya or Dr Sanjeev Gupta
* If STEMI evident on ECG, then call Dr Sanjeev Gupta and discuss with him. Normally he will come to ED and see the patient. He stays in the campus and is available 24 hrs.
* If he is not responding, send the patient to ICU and call ICU nurse. Start MI protocol.
* Sharp pain worsened by coughing or deep inspiration suggests pleuritis, pericarditis, or pneumothorax. Get CXR
* Has there been any recent trauma, fall? Get CXR
* Angina pectoris: pain similar MI, but <20 min, less severe, Relief with sublingual nitroglycerin.
* Pericarditis: pain is worsened by recumbency and relieved by sitting and leaning forward. Ketorolac 30 mg IM or IV initially or indomethacin 25–50 mg PO tid.
* Suspect Acute aortic dissection if excruciatingly severe pain that is tearing in nature and may radiate to the back. H/O HTN, trauma Marfan
* Think of PE/DVT if: Pregnancy; postoperative state; prolonged immobilization; malignancy; obesity; exogenous estrogen use; paraplegia; hemiplegia; CHF, etc
* PE is a potentially fatal condition that is too often underdiagnosed.
* It should be suspected in any hospitalized patient who develops acute shortness of breath or chest pain, especially with any of the above risk factors and a clear lung examination.
* PE less likely if <50 yrs, HR <100, sats≥95%, No hemoptysis, No estrogen use, No prior DVT or PE, No unilateral leg swelling, No surgery/trauma requiring hospitalization within the prior four weeks
* If D-dimer<500: PE excluded. No further testing.
* If D-dimer>500 do CT pulmonary angiography
* If CT angio is not available do lower extremity compression ultrasonography with Doppler
* Cardio consult for PE management
* Tension pneumothorax: hypotension, tracheal deviation, venous distention, and severe respiratory distress. 16G needle in second ICS
* Chest tube insertion for all other pneumothoraces.
* GERD: burning pain that is made worse with recumbency and relieved by antacids.
* Gastritis/PUD: Alcohol use, trauma, major surgery, or ICU admission, NSAIDs
* Syr Gelusil MPS 30 mL Q 4-6 hr may provide immediate relief, Ranitidine 150 mg BD or PPIs
* Biliary colic? postprandial pain; Order RUQ U/S, LFTs.; Inj anti spasmodics
* Pancreatitis: gallstones or alcohol?; Order amylase & lipase; abd CT/USG abd
* Costochondritis, Muscle strain/spasm, Rib fractures after trauma. Give NSAIDs
* Physical examination key points
* Hypotension: massive MI, cardiac tamponade, tension pneumothorax, acute massive PE, rupture of a dissecting aneurysm, or gastritis or peptic ulcer disease with hemorrhage.
<hr>
<center>''Send to ICU IMMEDIATELY''</center>
<hr>
* Hypertension: acute MI or aortic dissection?
* Fever: PE, MI, pneumonia, or pericarditis.
* Tachycardia; pain, MI, PE
* Bradycardia: IWMI, heart block
* Oral thrush: Candida esophagitis.
* Dilated neck veins: acute tension pneumothorax or cardiac tamponade.
* Pain with hyperextension of the neck may indicate a cervical nerve or disk problem as a cause of referred shoulder and chest pain.
* Localized chest wall tenderness may result from a contusion, costochondritis, or rib fracture.
* Suspect Herpes zoster if Intense unilateral pain. Dermatomal rash & sensory findings.
* Acyclovir 5 times/day for 7 days, Ultracet for pain, Steroids not much benefit, Amitriptyline or Gabapentin for neuropathic pain
* Suspect Anxiety if “Tightness”, dyspnea, palpitations, other somatic symptoms
* Give anti anxiety medications such as Alprazolam or Chlordiazepoxide
* Bibasilar crackles and/or wheezes may occur with decompensated CHF resulting from MI
* Lung examination may be normal in acute PE.
* Most often, the cardiac exam is normal in a patient with acute MI or angina pectoris.
* Labs: CBC, ABG if needed, Trop T STAT and q4-6 hrs for 24-48 hrs
* Patients presenting with MI may initially have an entirely normal ECG, and the diagnosis of MI cannot be excluded on the basis of a normal ECG.
* If high suspicion for MI admit the patient, cardiac monitor, serial ECGs, Cardiac enzymes
* CXR if cause of the chest pain is unclear.
* ECHO for diagnosing thoracic aortic dissection and assessing regional wall abnormalities in acute MI.
!!!<center>''CHEST TUBE PLACEMENT''</center>
<iframe width="806" height="453" src="https://www.youtube.com/embed/_6sFa79u6FQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
* Name of the Patient
* View (PA/AP)
* Rotation
* Inspiration (at least 6 anterior ribs on the Left side)
* Cardiac shadow
* Cardiac Border
* Hilar margins
* CP Angles
* Volume of Lung
* Bones
!!Heart Failure
!!!Suggested by
* breathlessness
* ankle oedema
* iJVP
* displaced apex
* 3rd and 4th heart sound (gallop rhythm)
* dullness to percussion and
* crackles at both bases
!!!Confirmed by
* ''CXR'' showing large heart,fluffy opacification at hila and both bases and
* ''ECHO'' showing dilated heart and poor contractility
!!!Finalized by
the predictable outcome of management,
!!!!Acute
*sitting patient up
*if hypoxic, controlled O2 aiming for saturations 94–96%
*diuretics IV
*Nitrates IV and diamorphine if very breathless and systolic BP >90
!!!!Chronic
*thiazide or loop diuretic
*ACE inhibitor(or angiotensin receptor blocker)
*blocker* and
*spironolactone (monitoring potassium)
* Beta-blockers generally be initiated only after initial treatment of decompensated heart failure (i.e. when signs and symptoms of fluid overload have resolved) and after the patient has been initiated on an adequate recommended dose of ACE-inhibitor
```
NICE issued updated guidelines on management in 2018, key points are summarised here
Whilst loop diuretics play an important role in managing fluid overload it should be remembered that no long-term reduction in mortality has been demonstrated for loop diuretics such as furosemide.
```
''The first-line treatment for all patients is both an `ACE-inhibitor` and a `beta-blocker`''
* generally, one drug should be started at a time. NICE advise that clinical judgement is used when determining which one to start first
* beta-blockers licensed to treat heart failure in the UK include bisoprolol, carvedilol, and nebivolol.
;BECAR NEBS in heart failure (NEBS are not of use in HF)
:Bisoprolol - CARvedilol - NEBivolol are approved Beta blockers in CHF
* ACE-inhibitors and beta-blockers have no effect on mortality in heart failure with preserved ejection fraction
''Second-line treatment is an `aldosterone antagonist`''
* these are sometimes referred to as mineralocorticoid receptor antagonists. Examples include spironolactone and eplerenone
* it should be remember that both ACE inhibitors (which the patient is likely to already be on) and aldosterone antagonists both cause hyperkalaemia - therefore potassium should be monitored
''Third-line treatment should be initiated by a specialist''
* Options include ivabradine, sacubitril-valsartan, hydralazine in combination with nitrate, digoxin and cardiac resynchronisation therapy
* ivabradine
** criteria: `sinus rhythm > 75/min and a left ventricular fraction < 35%`
* sacubitril-valsartan
** criteria: `left ventricular fraction < 35%`
** is considered in heart failure with reduced ejection fraction who are symptomatic on ACE inhibitors or ARBs
** should be initiated following ACEi or ARB wash-out period
* DiGoxin
** digoxin has also not been proven to reduce mortality in patients with heart failure. It may however improve symptoms due to its inotropic properties
** it is strongly indicated if there is coexistent `atrial fibrillation`
* hydralazine in combination with nitrate
** this may be particularly indicated in `Afro-Caribbean` patients
* cardiac resynchronisation therapy
** indications include a `widened QRS` (e.g. left bundle branch block) complex on ECG
;AB-C-SuDHIR
:''A''ce - ''B''etaBlocker - ''C''pironolactone
:''S''acubitril - ''D''igoxin - ''H''ydralazine combo - ''I''vabradine - ''R''esync
''Other treatments''
* offer `annual influenza` vaccine
* offer `one-off pneumococcal` vaccine
** adults usually require just one dose but those with asplenia, splenic dysfunction or chronic kidney disease need a booster every 5 years
---
!!!<center>''CHF PROTOCOL''</center>
<hr>
* Daily weights
* RBS with Glucometer TDS if Diabetic
* Fluid restrictions 1000-1500 ml/day
* Cardiac monitor
* Strict Intake and Output
* Labs: CBC, lytes, Cr, troponin, LFTs, VBG, BNP/NT-proBNP
* CXR: Pulm edema, pl effusion, ↑ heart size
* BNP (>100 ng/L), NT-proBNP (>300 ng/L)
* Bedside thoracic U/S; check the following
* Pleural effusions (2/2 CHF or other dx)
* Focal B-lines (eg, 2/2 PNA, infarct > asymmetric pulm edema)
* Reduced EF & pericardial effusion
* IVC inspiratory collapsibility: <50% collapsibility w/ inspiration suggests volume overload; cannot be used if pt on PPV
* Propped up position
* Oxygen 2 L/min via NC to maintain sats >92%
* BIPAP support 12/6; with the help of ICU nurse
* Intubate profound AMS, resp failure
* Inj Morphine 2 mg IV SOS for SOB, anxiety
* Inj Lasix 40 mg IV STAT, if SBP>100 then 20 mg IV q6h
* Conversions: Furosemide:Torsemide:Bumetanide 40:10:1; Furosemide (PO:IV) 2:1; Torsemide (PO:IV) 1:1; Bumetanide (PO:IV) 1:1
* Tab Metolazone 2.5 mg OD
* Inj Monocef 1 gm IV q12h
* Inj Pantop 40 IV OD
* Inj Emeset 4 mg IV q8h SOS nausea/vomiting
* Tab PCM 500 q8h SOS fever/pain
* Tab Aldactone 25 mg OD
* Tab Ramipril 2.5 mg BD OR
* Tab Losartan 25 mg BD
* If CAD
* Tab Ecosprin 75 mg OD
* If chest pain Tab Sorbitrate 5 mg SOS
* Syr Potklor 20 meq/5 ml 1 tsp TDS if low K
* Tab Lipikind 20 mg OD
* DVT prophylaxis: Inj Lorapin 40 U sc OD
* Consult to cardiology
* Tab Zolfresh 10 mg SOS insomnia
* Syr Cremaffin Plus 30 mL SOS constipation
---
<center>
| !HEART FAILURE DRUGS |<|
|Ramipril|Tab Cardace 2.5mg/5mg|
|Spironolactone|Tab Aldactone 25mg/50mg|
|Metoprolol|Tab Metolar XR 25/50mg|
|Metolazone|Tab Metoz 2.5mg/5mg<br>Tab Zytanix 2.5mg/5mg|
|Sacubitril+Valsartan|Tab Azmarda 50mg/100mg/200mg<br>Tab Cidmus 50mg/100mg/200mg<br>Tab Vymada 50mg/100mg/200mg|
</center>
---
<div id="notecontent">Chickenpox is caused by primary infection with varicella-zoster virus. Shingles is caused by the reactivation of dormant virus in dorsal root ganglion. In pregnancy, there is a risk to both the mother and also the fetus, a syndrome now termed fetal varicella syndrome<br><br>Risks to the mother<br><ul><li>5 times greater risk of pneumonitis</li></ul><br>Fetal varicella syndrome (FVS)<br><ul><li>risk of FVS following maternal varicella exposure is around 1% if occurs before 20 weeks gestation</li><li>studies have shown a very small number of cases occurring between 20-28 weeks gestation and none following 28 weeks</li><li>features of FVS include skin scarring, eye defects (microphthalmia), limb hypoplasia, microcephaly and learning disabilities</li></ul><br>Other risks to the fetus<br><ul><li>shingles in infancy: 1-2% risk if maternal exposure in the second or third trimester</li><li>severe neonatal varicella: if the mother develops rash between 5 days before and 2 days after birth there is a risk of neonatal varicella, which may be fatal to the newborn child in around 20% of cases</li></ul><br>Management of chickenpox <i>exposure</i> in pregnancy<br><ul><li>if there is any doubt about the mother previously having chickenpox <span id="concept_popover_id_413" class="concept concept-0 trigger-link" data-cid="413" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative413'>You've never been tested on this concept</div><br><div id='div_concept_rating413' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(10,255,0)'>Importance: <b>98</b></span> </div>" data-original-title="Chickenpox exposure in pregnancy - first step is to check antibodies">maternal blood should be urgently checked for varicella antibodies</span></li><li><span class="concept" data-cid="414">if the pregnant woman is not immune to varicella she should be given varicella-zoster immunoglobulin (VZIG) as soon as possible</span>. RCOG and Greenbook guidelines suggest <span class="concept" data-cid="1634">VZIG is effective up to 10 days post exposure</span></li></ul><br><span id="concept_popover_id_10929" class="concept concept-0 trigger-link" data-cid="10929" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10929'>You've never been tested on this concept</div><br><div id='div_concept_rating10929' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(61,255,0)'>Importance: <b>88</b></span> </div>" data-original-title="Pregnant women ≥ 20 weeks who develop chickenpox are generally treated with oral aciclovir if they present within 24 hours of the rash">Management of chickenpox in pregnancy</span><br><ul><li>if a pregnant woman develops chickenpox in pregnancy then specialist advice should be sought</li><li>there is an increased risk of serious chickenpox infection (i.e. maternal risk) and fetal varicella risk (i.e. fetal risk) balanced against theoretical concerns about the safety of aciclovir in pregnancy</li><li>consensus guidelines (Health Protection Authority and RCOG) suggest <b>oral aciclovir</b> should be given if the pregnant women is ≥ 20 weeks and she presents within 24 hours of onset of the rash</li><li>if the woman is < 20 weeks the aciclovir should be 'considered with caution'</li></ul></div>
<div id="notecontent">The following table gives a basic outline of child health surveillance in the UK<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Antenatal</b></th><th>Ensure intrauterine growth<br>Check for maternal infections e.g. HIV<br>Ultrasound scan for fetal abnormalities<br>Blood tests for Neural Tube Defects</th></tr></thead><tbody><tr><td><b>Newborn</b></td><td>Clinical examination of newborn<br>Newborn Hearing Screening Programme e.g. oto-acoustic emissions test<br>Give mother Personal Child Health Record</td></tr><tr><td><b>First month</b></td><td>Heel-prick test day 5-9 - hypothyroidism, PKU, metabolic diseases, cystic fibrosis, medium-chain acyl Co-A dehydrogenase deficiency (MCADD)<br>Midwife visit up to 4 weeks*</td></tr><tr><td><b>Following months</b></td><td>Health visitor input<br>GP examination at 6-8 weeks<br>Routine immunisations</td></tr><tr><td><b>Pre school</b></td><td>National orthoptist-led programme for pre-school vision screening to be introduced</td></tr><tr><td><b>Ongoing</b></td><td>Monitoring of growth, vision, hearing<br>Health professionals advice on immunisations, diet, accident prevention</td></tr></tbody></table></div><br>*this doesn't seem to happen in practice with health visitors usually taking over at 2 weeks</div>
*Head banging is normal behaviour for a 2-year-old. However, if this behaviour persists beyond 3 years it could be a sign of autism.
`According to the BASH guidelines for Sexually Transmitted Infections in Primary Care, urethritis in young men is most commonly due to a sexually transmitted infection (STI). Urine infections in men are uncommon below the age of 35 therefore all sexually active men with dysuria should be tested for STIs.
In 2014, the total number of new cases of STIs diagnosed in England decreased by 0.3% when compared to 2013 (439,243 vs. 440,707). Of the 439,243 new STI diagnoses made in 2014, the most commonly diagnosed STIs were chlamydia (206,774; 47%), genital warts (first episode; 70,612; 16%), gonorrhoea (34,958; 8%) and genital herpes (first episode; 31,777; 7%)`
<div id="notecontent"><i>Chlamydia</i> is the <span class="concept" data-cid="5052">most prevalent</span> sexually transmitted infection in the UK and is caused by <i>Chlamydia trachomatis</i>, an obligate intracellular pathogen. Approximately <span class="concept" data-cid="263">1 in 10 young women</span> in the UK have <i>Chlamydia</i>. The incubation period is around 7-21 days, although it should be remembered a large percentage of cases are asymptomatic<br><br>Features<br><ul><li>asymptomatic in around <span class="concept" data-cid="4321">70% of women and 50% of men</span></li><li>women: cervicitis (discharge, bleeding), dysuria</li><li>men: urethral discharge, dysuria</li></ul><br>Potential complications<br><ul><li>epididymitis</li><li>pelvic inflammatory disease</li><li>endometritis</li><li>increased incidence of ectopic pregnancies</li><li>infertility</li><li>reactive arthritis</li><li>perihepatitis (Fitz-Hugh-Curtis syndrome)</li></ul><br>Investigation<br><ul><li>traditional cell culture is no longer widely used</li><li><span class="concept" data-cid="9349">nuclear acid amplification tests (NAATs) are now the investigation of choice</span></li><li>urine (first void urine sample), vulvovaginal swab or cervical swab may be tested using the NAAT technique</li><li><span class="concept" data-cid="9652">for women: the vulvovaginal swab is first-line</span></li><li><span class="concept" data-cid="9653">for men: the urine test is first-line</span></li><li><span class="concept" data-cid="9655"><i>Chlamydia</i>testing should be carried out two weeks after a possible exposure</span></li></ul><br>Screening<br><ul><li>in England the National <i>Chlamydia</i> Screening Programme is open to all men and women aged 15-24 years</li><li>the 2009 SIGN guidelines support this approach, suggesting screening all sexually active patients aged 15-24 years</li><li>relies heavily on opportunistic testing</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb004b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb004.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb004b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Pap smear demonstrating infected endocervical cells. Red inclusion bodies are typical</div><br>Management<br><ul><li><span id="concept_popover_id_262" class="concept concept-3-u trigger-link" data-cid="262" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative262'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating262' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(91,255,0)'>Importance: <b>82</b></span> </div>" data-original-title="<i>Chlamydia</i> - treat with azithromycin or doxycycline">doxycycline (7 day course) or azithromycin (single dose)</span>. The 2009 SIGN guidelines suggest azithromycin should be used first-line due to potentially poor compliance with a 7 day course of doxycycline</li><li>if pregnant then <span id="concept_popover_id_8589" class="concept concept-0 trigger-link" data-cid="8589" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8589'>You've never been tested on this concept</div><br><div id='div_concept_rating8589' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(15,255,0)'>Importance: <b>97</b></span> </div>" data-original-title="Azithromycin, erythromycin or amoxicillin may be used to treat <i>Chlamydia</i> in pregnancy">azithromycin, erythromycin or amoxicillin</span> may be used. The SIGN guidelines suggest azithromycin 1g stat is the drug of choice 'following discussion of the balance of benefits and risks with the patient'</li><li>patients diagnosed with <i>Chlamydia</i> should be offered a choice of provider for initial partner notification - either trained practice nurses with support from GUM, or referral to GUM</li><li>for men with urethral symptoms: all contacts since, and in the four weeks prior to, the onset of symptoms</li><li>for women and asymptomatic men all partners from the last six months or the most recent sexual partner should be contacted</li><li>contacts of confirmed <i>Chlamydia</i> cases should be offered treatment prior to the results of their investigations being known (treat then test)</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/uwb005b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/uwb005.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Chlamydia infection" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/uwb005b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Another Pap smear demonstrating infected endocervical cells. Stained with H&E</div></div>
;Chlamydia - partner notification:
* symptomatic men: all partners from the 4 weeks prior to the onset of symptoms
* women + asymptomatic men: all partners from the last 6 months or the most recent sexual partner
;Test of Cure
* A TOC should be performed 6 weeks post infection in pregnant women as recommended by the BASHH guidelines. If a TOC is performed earlier than 6 weeks there is a possibility that nonviable Chlamydia DNA will still be present on the NAAT, giving a false positive result.
* A TOC is NOT routinely required in uncomplicated chlamydia infection in men and non- pregnant women.
---
!!!<center>''CHLAMYDIA TRACHOMATIS''</center>
<hr>
* Doxy 100 PO BD 7 ds OR Azithro 1 g STAT
* [[LGV]]
** Painless [[ulcer|GenitalUlcer]]
** Painful lymph nodes
* Trachoma
** Infection of eye lid
** Tetracycline eye drops
<div class="figure"><div class="ttl">Considerations for individualizing antihypertensive therapy</div><div class="cntnt"><table cellspacing="0"><tbody> <tr> <td class="subtitle1">Indication or contraindication</td> <td class="subtitle1">Antihypertensive drugs</td> </tr> <tr> <td class="subtitle2_left" colspan="2">Compelling indications (major improvement in outcome independent of blood pressure)</td> </tr> <tr> <td class="indent1">Heart failure with reduced ejection fraction</td> <td>ACE inhibitor or ARB, beta blocker, diuretic, aldosterone antagonist*</td> </tr> <tr> <td class="indent1">Postmyocardial infarction</td> <td>ACE inhibitor or ARB, beta blocker, aldosterone antagonist</td> </tr> <tr> <td class="indent1">Proteinuric chronic kidney disease</td> <td>ACE inhibitor or ARB</td> </tr> <tr> <td class="indent1">Angina pectoris</td> <td>Beta blocker, calcium channel blocker</td> </tr> <tr> <td class="indent1">Atrial fibrillation rate control </td> <td>Beta blocker, nondihydropyridine calcium channel blocker</td> </tr> <tr> <td class="indent1">Atrial flutter rate control </td> <td>Beta blocker, nondihydropyridine calcium channel blocker</td> </tr> <tr> <td class="subtitle2_left" colspan="2">Likely to have a favorable effect on symptoms in comorbid conditions</td> </tr> <tr> <td class="indent1">Benign prostatic hyperplasia</td> <td>Alpha blocker</td> </tr> <tr> <td class="indent1">Essential tremor</td> <td>Beta blocker (noncardioselective)</td> </tr> <tr> <td class="indent1">Hyperthyroidism</td> <td>Beta blocker</td> </tr> <tr> <td class="indent1">Migraine</td> <td>Beta blocker, calcium channel blocker</td> </tr> <tr> <td class="indent1">Osteoporosis</td> <td>Thiazide diuretic</td> </tr> <tr> <td class="indent1">Raynaud phenomenon</td> <td>Dihydropyridine calcium channel blocker</td> </tr> <tr> <td class="subtitle2_left" colspan="2">Contraindications</td> </tr> <tr> <td class="indent1">Angioedema</td> <td>Do not use an ACE inhibitor</td> </tr> <tr> <td class="indent1">Bronchospastic disease</td> <td>Do not use a non-selective beta blocker</td> </tr> <tr> <td class="indent1">Liver disease</td> <td>Do not use methyldopa</td> </tr> <tr> <td class="indent1">Pregnancy (or at risk for)</td> <td>Do not use an ACE inhibitor, ARB, or renin inhibitor (eg, aliskiren)</td> </tr> <tr> <td class="indent1">Second- or third-degree heart block</td> <td>Do not use a beta blocker, nondihydropyridine calcium channel blocker unless a functioning ventricular pacemaker</td> </tr> <tr> <td class="subtitle2_left" colspan="2">Drug classes that may have adverse effects on comorbid conditions</td> </tr> <tr> <td class="indent1">Depression</td> <td>Generally avoid beta blocker, central alpha-2 agonist</td> </tr> <tr> <td class="indent1">Gout</td> <td>Generally avoid loop or thiazide diuretic</td> </tr> <tr> <td class="indent1">Hyperkalemia</td> <td>Generally avoid aldosterone antagonist, ACE inhibitor, ARB, renin inhibitor</td> </tr> <tr> <td class="indent1">Hyponatremia</td> <td>Generally avoid thiazide diuretic</td> </tr> <tr> <td class="indent1">Renovascular disease</td> <td>Generally avoid ACE inhibitor, ARB, or renin inhibitor</td> </tr> </tbody></table></div><div class="graphic_footnotes">ACE: angiotensin-converting enzyme; ARB: angiotensin receptor blocker.<br>* A benefit from an aldosterone antagonist has been demonstrated in patients with NYHA class III-IV heart failure or decreased left ventricular ejection fraction after a myocardial infarction.</div><div class="graphic_reference">Adapted from: The Seventh Report of the Joint National Committee on Prevention, Detection, Evaluation, and Treatment of High Blood Pressure. JAMA 2003; 289:2560.</div><div id="graphicVersion">Graphic 63628 Version 15.0</div></div>
<div id="notecontent">Partial or complete airway obstruction is a life-threatening emergency. Episodes often occur whilst eating and patients will often clutch their neck. The first step is to ask the patient 'Are you choking?'<br><br>Features of airway obstruction (taken from the Resus Council)<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Mild airway obstruction</b></th><th><b>Severe airway obstruction</b></th></tr></thead><tbody><tr><td>Response to question 'Are you choking?'<br><ul><li>victim speaks and answers yes</li></ul><br>Other signs<br><ul><li>victim is able to speak, cough, and breathe</li></ul></td><td>Response to question 'Are you choking?'<br><ul><li>victim unable to speak</li><li>victim may respond by nodding</li></ul><br>Other signs<br><ul><li>victim unable to breathe</li><li>breathing sounds wheezy</li><li>attempts at coughing are silent</li><li>victim may be unconscious</li></ul></td></tr></tbody></table></div><br>If mild airway obstruction<br><ul><li>encourage the patient to cough</li></ul><br>If severe airway obstruction and is conscious:<br><ul><li>give up to 5 back-blows</li><li>if unsuccessful give up to 5 abdominal thrusts</li><li>if unsuccessful continue the above cycle</li></ul><br>If unconscious<br><ul><li>call for an ambulance</li><li>start cardiopulmonary resuscitation (CPR)</li></ul></div>
!!Ascending cholangitis
is a bacterial infection (typically E. coli) of the biliary tree. The most common predisposing factor is gallstones.
`Charcot's triad` of right upper quadrant (RUQ) pain, fever and jaundice occurs in about 20-50% of patients
* fever is the most common feature, seen in 90% of patients
* RUQ pain 70%
* jaundice 60%
* hypotension and confusion are also common (the additional 2 factors in addition to the 3 above make Reynolds' pentad)
Other features
* raised inflammatory markers
Management
* intravenous antibiotics
* endoscopic retrograde cholangiopancreatography (ERCP) after 24-48 hours to relieve any obstruction
```
Cholangitis is an infection of the biliary tree that commonly presents with fever, RUQ pain and jaundice. (Charcot's triad). Patients are usually over the age of 50 years. The most common cause is gallstones and that is presumably the case in this lady with the past episodes of biliary colic. It can lead to sepsis and multi organ failure if not recognised and treated promptly. antibiotics and drainage of the biliary tree are essential parts of the management of these patients.
Laboratory tests looking at inflammatory markers, LFT, FBC and U&E are essential and ultrasound scan of the abdomen should be performed. Dilatation of the common bile duct is a feature in over 90% of patients with cholangitis although stones are not always seen. Drainage of the biliary tree can be done via ERCP although laparotomy with surgical exploration of the common bile duct may be required in some cases.
```
>CHAR CO lan JITIS
* CHAR COts: Jaundice + ITIS(Fever, Pain)
---
>Reynolds: Hypotension + Confusion
!!!<center>''CHOLECYSTITIS-CHOLANGITIS''</center>
<hr>
* Without previous biliary procedures- Not severely ill: Ceftriaxone 1 gm IV q24h OR Cipro 400 IV Q12H + Metro 500 IV Q8H, change to PO Cipro 500 BD/Levoflox 750 OD/Moxiflox 400 OD/ Augmentin 875 PO BD for 1-2 wks; With prior biliary procedure: Pip/taz 4.5 IV Q8H OR Cipro 400 IV Q12H + Metro 500 IV Q8H OR Mero 1gm Q8H
!!!<center>''CHOLERA''</center>
<hr>
* Doxy 300mg STAT/Azithro 1gm STAT or Cipro 500 BD 3ds
<div id="notecontent"><span class="concept" data-cid="5635">Cholesteatoma is a non-cancerous growth of squamous epithelium</span> that is 'trapped' within the skull base causing local destruction. It is most common in patients aged 10-20 years. Being born with a cleft palate increases the risk of cholesteatoma around 100 fold.<br><br>Main features<br><ul><li><span class="concept" data-cid="9968">foul-smelling, non-resolving discharge</span></li><li>hearing loss</li></ul><br>Other features are determined by <span id="concept_popover_id_3809" class="concept concept-0 trigger-link" data-cid="3809" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3809'>You've never been tested on this concept</div><br><div id='div_concept_rating3809' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="Cholesteatoma could cause local invasion leading to cranial nerve abnormalities">local invasion</span>:<br><ul><li><span id="concept_popover_id_3809" class="concept concept-0 trigger-link" data-cid="3809" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3809'>You've never been tested on this concept</div><br><div id='div_concept_rating3809' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="Cholesteatoma could cause local invasion leading to cranial nerve abnormalities">vertigo</span></li><li><span id="concept_popover_id_3809" class="concept concept-0 trigger-link" data-cid="3809" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3809'>You've never been tested on this concept</div><br><div id='div_concept_rating3809' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="Cholesteatoma could cause local invasion leading to cranial nerve abnormalities">facial nerve palsy</span></li><li>cerebellopontine angle syndrome</li></ul><br>Otoscopy<br><ul><li>'attic crust' - seen in the uppermost part of the ear drum</li></ul><br>Management<br><ul><li>patients are referred to ENT for consideration of surgical removal</li></ul></div>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd120b.jpg">
</center>
Causes
* syphilis
* cytomegalovirus
* toxoplasmosis
* sarcoidosis
* tuberculosis
---
>PIZZA for CME session
*PIZZA PIE appearance( retinal spots and flame haemorrhages) in CMV Retinitis
---
>TOXINs cause WHITE PATCH over VITREOUS commode
*TOXOplasma retinitis cause WHITE PATCH over VITREOUS inflammation
---
`Cytomegalovirus retinitis classically has the appearance of a 'pizza pie', with retinal spots and flame haemorrhages.
Toxoplasmosis retinitis classically presents with white focal retinitis with overlying vitreous inflammation.`
Diagnosed after `at least 4 months of disabling fatigue` affecting mental and physical function more than 50% of the time in the absence of other disease which may explain symptoms
Epidemiology
* more common in females
* past psychiatric history has not been shown to be a risk factor
Fatigue is the central feature, other recognised features include
* sleep problems, such as insomnia, hypersomnia, unrefreshing sleep, a disturbed sleep-wake cycle
* muscle and/or joint pains
* headaches
* painful lymph nodes without enlargement
* sore throat
* cognitive dysfunction, such as difficulty thinking, inability to concentrate, impairment of short-term memory, and difficulties with word-finding
* physical or mental exertion makes symptoms worse
* general malaise or 'flu-like' symptoms
* dizziness
* nausea
* palpitations
Investigation
* `NICE guidelines suggest carrying out a large number of screening blood tests to exclude other pathology e.g. FBC, CRP, ESR, U&E, Cr, eGFR, Glucose, LFT, TFT, Calcium, CK, Ferritin*, coeliac screening and also urinalysis`
Management
* cognitive behaviour therapy - very effective, number needed to treat = 2
* graded exercise therapy - a formal supervised program, not advice to go to the gym
* 'pacing' - organising activities to avoid tiring
* low-dose amitriptyline may be useful for poor sleep
* referral to a pain management clinic if pain is a predominant feature
Better prognosis in children
*children and young people only
| !CHRONIC CONSTIPATION DRUGS |<|
|Lubiprostone|Cap Lubowel 24 mcg BD, with food and water|
|Docusate|Tab Lexicon 100 mg BD 1 wk|
|Glycerin|Syr Glycerin 5-15 ml as enema (<6 yrs:2-5 ml)|
|Isabghula|Pow Isabgol 2 tsp in 100 ml water HS, 1 wk|Pow Softovac-SF 2 tsp in 100 ml water HS, 1 wk|
|Mg(OH),,2,,|Syr Cremaffin 30-60 mL/day once daily at bedtime|
|Lactulose|Syr Duphalac 15 ml BD|
|Mg(OH),,2,,+Sod pico|Syr Cremaffin Plus 30-60 mL/day once daily at bedtime|
|Psyllium|Pow Softovac 1-2 tsp with water BD, 1 wk|
|Senna|Tab Senasof 15 mg HS 7 days|
|Senna+<br>karaya gum|Pow Evacuol 1 tsp BD, 7 days|
| !CHRONIC DIARRHEA DRUGS |<|
|Loperamide|Tab Lopamide 1 tab OD, 7 days|
|Metronidazole+<br>Diloxanide|Tab Aristogyl Plus TDS, 1 wk, with food|
|Metronidazole+<br>Furazolidone|Tab Metrogyl-F TDS, 1 wk, with food|
|Metronidazole|Tab Metrogyl 400 mg TDS, 1 wk, with food|
|Ofloxacin|Tab Oflox 200 BD, 7 days, Do not take within 2 hours of food or any antacids|
|Rifaximin|Tab Rifagut 200 mg TDS, 14 days|
| !CHRONIC DIARRHEA (WHIPPLE) |<|
|Ceftriaxone(III)|Inj Cefaxone 1 gm IV daily (75/k/d) 10-14d|
|Haloperidol|Tab Serenace 0.25 mg BD, 7 days|
|Probiotic|Cap Nutrolin-B 1 cap TDS, 10 days<br>Sach Econorm 1 sach OD, 10 days|
|Albendazole|Tab. Zentel 400 mg once|
|Diphenoxylate and atropine|Tab Lomotil TDS for 1 day then SOS diarrhea|
|Loperamide|Tab Lopamide TDS for 1 day then SOS diarrhea|
|Mebevarine|Tab Colospa 100 mg TDS, 1 wk|
|B complex|Inj Vitcofol 3 cc IM alternate days for 5 doses|
|Enzymes|Tab Unienzyme 1 tab TDS with meals, 7 days|
Ciclosporin is an immunosuppressant which decreases clonal proliferation of T cells by reducing IL-2 release. It acts by binding to cyclophilin forming a complex which inhibits calcineurin, a phosphatase that activates various transcription factors in T cells
Adverse effects of ciclosporin (''note how everything is increased - Fluid, BP, K+, Hair, Gums, Glucose'')
* nephrotoxicity
* hepatotoxicity
* fluid retention
* hypertension
* hyperkalaemia
* hypertrichosis
* gingival hyperplasia
* tremor
* impaired glucose tolerance
* hyperlipidaemia
* increased susceptibility to severe infection
Interestingly for an immunosuppressant, ciclosporin is noted by the BNF to be 'virtually non-myelotoxic'.
Indications
* following organ transplantation
* rheumatoid arthritis
* psoriasis (has a direct effect on keratinocytes as well as modulating T cell function)
* ulcerative colitis
* pure red cell aplasia
---
>HAIRY GUMS KID!, LIVe with CYCLE, have FATTY ELECTRAL if TREMBLING
*HyperTrichosis - Gingival Hyperplasia - KIDney tox - LIVer tox, HyperLipidemia, HyperKalemia, HyperGlycemia, Fluid retention - BP - Tremors
---
!!!<center>''CIRRHOTIC PATIENTS ''</center>
<hr>
* ''Cirrhotic Pts with GI hemorrhage: (Prophy)'' Cipro 500 BD PO 7d OR Ceftriaxone 1 IV Q24H then switch to Cipro
* ''Non bleeding cirrhotic pts with ascites: (Prophy)'' Bacrtim DS PO OD
Common causes of chronic kidney disease
* diabetic nephropathy
* chronic glomerulonephritis
* chronic pyelonephritis
* hypertension
* adult polycystic kidney disease
`CKD on haemodialysis - most likely cause of death is IHD`
---
Chronic kidney disease is defined based on the presence of either kidney damage or decreased kidney function for three or more months, irrespective of cause.
* Duration ≥3 months, based on documentation or inference
* Glomerular filtration rate (GFR) <60 mL/min/1.73 m2
*** The normal GFR in young adults is approximately 125 mL/min/1.73 m2; GFR <15 mL/min/1.73 m2 is defined as kidney failure
*** Decreased GFR can be detected by current estimating equations for GFR based on serum creatinine (estimated GFR) but not by serum creatinine alone
*** Decreased estimated GFR can be confirmed by measured GFR, measured creatinine clearance, or estimated GFR using cystatin C
* Kidney damage, as defined by structural abnormalities or functional abnormalities other than decreased GFR
** Pathologic abnormalities like
*** Glomerular diseases (diabetes, autoimmune diseases, systemic infections, drugs, neoplasia)
*** Vascular diseases (atherosclerosis, hypertension, ischemia, vasculitis, thrombotic microangiopathy)
*** Tubulointerstitial diseases (urinary tract infections, stones, obstruction, drug toxicity)
*** Cystic disease (polycystic kidney disease)
** History of kidney transplantation
** Albuminuria as a marker of kidney damage (increased glomerular permeability, urine albumin-to-creatinine ratio [ACR] >30 mg/g)
*** The normal urine ACR in young adults is <10 mg/g. Urine ACR categories 10-29, 30-300 and >300 mg are termed "mildly increased, moderately increased, and severely increased" respectively. Urine ACR >2200 mg/g is accompanied by signs and symptoms of nephrotic syndrome (low serum albumin, edema and high serum cholesterol).
*** Threshold value corresponds approximately to urine dipstick values of trace or 1+, depending on urine concentration
*** High urine ACR can be confirmed by urine albumin excretion in a timed urine collection
** Urinary sediment abnormalities as markers of kidney damage:
*** RBC casts in proliferative glomerulonephritis
*** WBC casts in pyelonephritis or interstitial nephritis
*** Oval fat bodies or fatty casts in diseases with proteinuria
*** Granular casts and renal tubular epithelial cells in many parenchymal diseases (non-specific)
** Imaging abnormalities as markers of kidney damage (ultrasound, computed tomography and magnetic resonance imaging with or without contrast, isotope scans, angiography).
*** Polycystic kidneys
*** Hydronephrosis due to obstruction
*** Cortical scarring due to infarcts, pyelonephritis or vesicoureteral reflux
*** Renal masses or enlarged kidneys due to infiltrative diseases
*** Renal artery stenosis
*** Small and echogenic kidneys (common in later stages of CKD due to many parenchymal diseases)
!!Chronic kidney disease: eGFR and classification
<div id="notecontent">Serum creatinine may not provide an accurate estimate of renal function due to differences in muscle. For this reason formulas were develop to help estimate the glomerular filtration rate (estimated GFR or eGFR). The most commonly used formula is the Modification of Diet in Renal Disease (MDRD) equation, which uses the following variables:<br><ul><li>serum creatinine</li><li>age</li><li>gender</li><li>ethnicity</li></ul><br>Factors which may affect the result<br><ul><li>pregnancy</li><li>muscle mass (e.g. amputees, body-builders)</li><li>eating red meat 12 hours prior to the sample being taken</li></ul><br>CKD may be classified according to GFR:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>CKD stage</b></th><th><b>GFR range</b></th></tr></thead><tbody><tr><td>1</td><td>Greater than 90 ml/min, with some sign of kidney damage on other tests (if all the kidney tests* are normal, there is no CKD)</td></tr><tr><td>2</td><td>60-90 ml/min with some sign of kidney damage (if kidney tests* are normal, there is no CKD)</td></tr><tr><td>3a</td><td>45-59 ml/min, a moderate reduction in kidney function</td></tr><tr><td>3b</td><td>30-44 ml/min, a moderate reduction in kidney function</td></tr><tr><td>4</td><td>15-29 ml/min, a severe reduction in kidney function</td></tr><tr><td>5</td><td>Less than 15 ml/min, established kidney failure - dialysis or a kidney transplant may be needed</td></tr></tbody></table></div><br>*i.e. normal U&Es and no proteinuria</div>
!!!<center>''CHRONIC KIDNEY DISEASE PROTOCOL''</center>
<hr>
* Low sodium diet if HTNve
* Low potassium diet if oliguric or hyperkalemic
* Moderate protein restriction,
* Strict glucose control in DM; Insulin sliding scale mild one
* ''BP Control: ''
* Tab Amlodipine 5 mg BD
* Tab Arkamin 100 mcg TDS
* Tab Minipress 5 mg BD
* Tab Dytor 20 mg BD
* ''Fluid overload:''
* Sodium restriction
* Inj Lasix 40 mg IV q12h
* Inj Dytor 20 mg IV q12h
* ''Hyperkalemia:''
* Low potassium diet
* Avoid NSAIDs, Nonselective beta-blockers
* Inj Calcium gluconate + 10 ml NS pass slowly in 15 min
* Calcium treatment may be repeated after 5 minutes if ECG changes persist; patient must be on cardiac monitor when receiving calcium;
* Inj Insulin regular 10 U + 100 ml 25% Dextrose IV STAT
* Nebs Asthalin 10-20 ml in 4 mL saline nebulized over 10 minutes
* Inj Sodium bicarbonate 150 meq in 500 ml 5% Dextrose in 4 hrs
* Sachet K-bind 15-30 mg STAT
* Inj Lasix 20-40 mg IV STAT
* Hemodialysis
* Rechek K q6h
* Dyselectrolytemia: Start [[Dyselectrolytemia|Dyselectrolytemia Protocol]] protocol
* ''Metabolic acidosis:''
* Inj Sodium bicarbonate 100 meq in 250 ml 5%D or DW in 4 hrs
* Tab Nodosis 500 mg TDS
* Maintain the serum bicarb above 23 meq/L.
* Sodium bicarbonate 0.5 to 1 meq/kg per day.
* ''Hyperphosphatemia:''
* The serum calcium-phosphorus product should also be maintained at <55 mg2/dL2.
* Tab Calcimax Forte BD(Calcium carbonate 1-2 g or more/day in 3-4 divided doses) OR
* Tab Lanum 667 TDS with each meal
* If hypercalcemia then
* Tab Revlamer 800mg TDS
* ''Anaemia:''
* Erythropoietin when Hgb < 10 g/dL and try to maintain goal Hgb levels between 10 and 11 g/dL.
* The initial EPO dose should be approximately 50 to 100 units/kg per week begin at 10,000 units subcutaneously once weekly or 20,000 units subcutaneously every other week.
* Statins if TG>500, LDL >70
* ''Fever/infection:''
* Blood cultures, urine cultures
* Labs: CBC, KFT with bicarb, LFT, Hba1c if diabetic, ABG
* Inj Vancomycin: 20 mg/kg load followed by 10mg/kg after HD
* Inj Pip/taz: 2.25gm q8h
* Dry weight & Daily weight
* If Chest pain, CAD and ischemia: Tab Ecospirin AV OD
* Tab Ramipril 5 mg OD or Losar 50 mg OD if ESRD with normal K
* ECG, CXR, troponin (if appropriate) for chest pain
* If BP>200/100 give Arkamin 100 mcg STAT, recheck BP after 1 hr then repeat
* Acute hypotension, bleeding, sepsis requiring fluid resuscitation
* Start with small IVF bolus (500mL) and monitor clinical status closely
!!Chronic lymphocytic leukaemia
(CLL) is caused by a monoclonal proliferation of well-differentiated lymphocytes which are almost always B-cells (99%). It is the most common form of leukaemia seen in adults.
Features
* often none
* constitutional: anorexia, weight loss
* bleeding, infections
* lymphadenopathy more marked than CML
Complications
* anaemia
* hypogammaglobulinaemia leading to recurrent infections
* warm autoimmune haemolytic anaemia in 10-15% of patients
* transformation to high-grade lymphoma (Richter's transformation)
Investigations
* blood film: smudge cells (also known as smear cells)
* immunophenotyping
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb016b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb016.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/B-cell chronic lymphocytic leukemia" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb016b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table>Peripheral blood film showing smudge B cells</center>
Clopidogrel is an antiplatelet agent used in the management of cardiovascular disease. It was previously used when aspirin was not tolerated or contraindicated but there are now a number of conditions for which clopidogrel is used in addition to aspirin, for example in patients with an acute coronary syndrome. Following the 2010 NICE technology appraisal clopidogrel is also now first-line in patients following an ischaemic stroke and in patients with peripheral arterial disease.
Clopidogrel belongs to a class of drugs known as thienopyridines which have a similar mechanism of action. Other examples include:
* prasuGREL
* ticaGRELor
* tiCLOpidine
Mechanism
* antagonist of the P2Y12 adenosine diphosphate (ADP) receptor, inhibiting the activation of platelets
Interactions
* concurrent use of proton pump inhibitors (PPIs) may make clopidogrel less effective (MHRA July 2009)
* this advice was updated by the MHRA in April 2010, evidence seems inconsistent but omeprazole and esomeprazole still cause for concern. Other PPIs such as lansoprazole should be OK - please see the link for more details
<center>
<$button tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-tag-label" style='background-color:#E8E8E8; color:grey; border-color:black; ' message='tm-close-tiddler' >Close</$button>
</center>
<div text="sdfldkjflkds" align="right" style="position:sticky; left:950px; top:40px; bottom:50px: z-index:30;">
<h2><$button class=<<tv-config-toolbar-class>> message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}}>
{{$:/core/images/close-button}}
</$button></h2>
</div>
Clostridia are gram-positive, obligate anaerobic bacilli.
C. perfringens
* produces α-toxin, a lecithinase, which causes gas gangrene (myonecrosis) and haemolysis
* features include tender, oedematous skin with haemorrhagic blebs and bullae. Crepitus may present on palpation
C. botulinum
* typically seen in canned foods and honey
* prevents acetylcholine (ACh) release leading to flaccid paralysis
C. difficile
* causes pseudomembranous colitis, typically seen after the use of broad-spectrum antibiotics
* produces both an exotoxin and a cytotoxin
C. tetani
* produces an exotoxin (tetanospasmin) that prevents the release of glycine from Renshaw cells in the spinal cord causing a spastic paralysis
!!Cluster headaches
are known to be one of the most painful conditions that patients can have the misfortune to suffer. The name relates to the pattern of the headaches - they typically occur in clusters lasting several weeks, with the clusters themselves typically once a year.
Cluster headaches are `more common in men (3:1) and smokers`. `Alcohol may trigger an attack `and there also appears to be a relation to nocturnal sleep.
;Features
* pain typical occurs once or twice a day, each episode lasting 15 mins - 2 hours
* clusters typically last 4-12 weeks
* intense sharp, stabbing pain around one eye (recurrent attacks 'always' affect same side)
* patient is restless and agitated during an attack
* accompanied by redness, lacrimation, lid swelling
* nasal stuffiness, rhinorrhea (autonomic)
* miosis and ptosis in a minority( partial horner's syndrome)
;Management
* acute: 100% oxygen (80% response rate within 15 minutes), subcutaneous triptan (75% response rate within 15 minutes)
* prophylaxis: verapamil is the drug of choice. There is also some evidence to support a tapering dose of prednisolone
* NICE recommend seeking specialist advice from a neurologist if a patient develops cluster headaches with respect to neuroimaging
Some neurologists use the term trigeminal autonomic cephalgia to group a number of conditions including cluster headache, paroxysmal hemicrania and short-lived unilateral neuralgiform headache with conjunctival injection and tearing (`SUNCT`). It is recommended such patients are referred for specialist assessment as specific treatment may be required, for example it is known paroxysmal hemicrania responds very well to indomethacin
The Philadelphia chromosome is present in more than 95% of patients with chronic myeloid leukaemia (CML). It is due to a translocation between the long arm of chromosome 9 and 22 - t(9:22)(q34; q11). This results in part of the ABL proto-oncogene from chromosome 9 being fused with the BCR gene from chromosome 22. The resulting BCR-ABL gene codes for a fusion protein which has tyrosine kinase activity in excess of normal
Presentation (60-70 years)
* anaemia: lethargy
* weight loss and sweating are common
* splenomegaly may be marked → abdo discomfort
* an increase in granulocytes at different stages of maturation +/- thrombocytosis
* decreased leukocyte alkaline phosphatase
* may undergo blast transformation (AML in 80%, ALL in 20%)
Management
* imatinib is now considered first-line treatment
* hydroxyurea
* interferon-alpha
* allogenic bone marrow transplant
Imatinib
* inhibitor of the tyrosine kinase associated with the BCR-ABL defect
* very high response rate in chronic phase CML
---
>ABLA STP ran small LAP in Philadelphia Motor (TYRE) sports (Leukocyte Alk Phosphatase)
*LAP score is LOW in CML (Diff from Leukemoid)
---
>BCR-ABL = 9-22 = Philadelphia Chr
*Always confirm with BCR-ABL bcoz LAP could be falsely elevated from infection
---
>Sirisha STOP growing TIRES ! - NEEL IMA DAS TYRES
*℞ TYROsinkinase INHIBITors
*NILOtinib - IMAtinib - DASAtinib
*BMT is curative but not first line
---
*DDs for low LAP
*CML - Hypophosphatemia - PNH
*Elevated LAP in Leukemoid Reaction - Polycythemia Vera
---
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Arthropod Borne Encephalitis"/>ARTHROPOD-BORNE ENCEPHALITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Neurosyphilis"/>NEUROSYPHILIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Lyme Disease"/>LYME DISEASE</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Tubercular Meningitis"/>TUBERCULAR MENINGITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Candida CNS Infection"/>CANDIDA CNS INFECTION</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Bacterial Meningitis"/>BACTERIAL MENINGITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Meningitis"/>MENINGITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Intracranial Epidural Abscess"/>INTRACRANIAL EPIDURAL ABSCESS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Brain Abscess"/>BRAIN ABSCESS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Septic Dural Sinus"/>SEPTIC DURAL SINUS THROMBOSIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Spinal Epidural Abscess"/>SPINAL EPIDURAL ABSCESS</$button>
</center>
!!!<center>''COAGULOPATHY''</center>
<hr>
* Scenario: After cardiac catheterization, a patient has oozing from the radial arterial puncture site.
* Immediate Questions
* What is the patient’s blood pressure?
* Determine immediately if the bleeding is extensive enough to cause hypovolemia and shock
* Hypotension and coagulopathy: Think of sepsis.
* How much external bleeding is there? Look at wounds or needle puncture sites to see if there is active bleeding.
* Do factors exist that increase the likelihood of generalized bleeding? DIC?
* In general, when you have a bleeding patient, inquire about liver disease; nutritional status; family history of bleeding disorders; any bleeding with prior surgical procedures; and use of medications such as aspirin, NSAIDs, antiplatelet drugs, and anticoagulants.
* Check CBC, PBS, PT/INR, PTT, KFT, LFT, Type and cross-match
* Thrombocytopenia: refer [[topic|Thrombocytopenia]]
* Is the patient on Aspirin or NSAIDs
* Uremia?
* Coagulation defects?
* Congenital: Hemophilia A/B, etc
* Cancer, anticoagulant antibodies in postpartum women, SLE?
* Fever or hypothermia: suggests DIC
* Petechiae, purpura, easy bruising, and oozing from intravenous sites suggest a systemic rather than a local cause.
* Examine any incision for hematoma or for active bleeding.
* Splenomegaly, hepatomegaly, or ascites?
* Peripheral blood smear. fragments and helmet cells seen in DIC and TTP.
* Macrocytic anemia and hypersegmented neutrophils: B12/folate deficiency
* Renal function. Uremia inhibits platelet function.
* CXR any intrathoracic bleeding?
* CT head if suspecting intracranial bleeding
* Bone marrow aspiration and biopsy.
* Applying direct pressure and elevation.
* IVF if hypotension
* If Platelets <20,000 or with higher platelet counts if there is ongoing bleeding: Random donor platelet transfusion, usually 5–10 U at a time (often a “six-pack” is ordered)
* ITP, no treatment if platelets> 10,000
* Chronic ITP: prednisone, cyclophosphamide, azathioprine, or danazol. The best long-term results are obtained with splenectomy.
* TTP and HUS are treated with plasmapheresis.
* von Willebrand’s disease (vWD): Cryoprecipitate or fresh-frozen plasma
* Hemophilia A & B: Factor replacement
* DIC. Treat the underlying cause. FFP, platelet transfusions, and blood transfusions.
* Vitamin K deficiency/liver disease: 4 U FFP, Inj vitamin K 10 mg SC OD for 3 days
<div id="notecontent">Cocaine is an alkaloid derived from the coca plant. It is widely used as a recreational stimulant. The price of cocaine has fallen sharply in the past decade resulting in cocaine toxicity becoming a much more frequent clinical problem. This increase has made cocaine a favourite topic of question writers.<br><br>Mechanism of action<br><ul><li>cocaine blocks the uptake of dopamine, noradrenaline and serotonin</li></ul><br>The use of cocaine is associated with a wide variety of adverse effects:<br><br>Cardiovascular effects<br><ul><li>myocardial infarction</li><li>both tachycardia and bradycardia may occur</li><li>hypertension</li><li>QRS widening and QT prolongation</li><li>aortic dissection</li></ul><br>Neurological effects<br><ul><li><span class="concept" data-cid="1802">seizures</span></li><li>mydriasis</li><li>hypertonia</li><li>hyperreflexia</li></ul><br>Psychiatric effects<br><ul><li>agitation</li><li>psychosis</li><li>hallucinations</li></ul><br>Others<br><ul><li><span class="concept" data-cid="10682">ischaemic colitis</span> is recognised in patients following cocaine ingestion. This should be considered if patients complain of abdominal pain or rectal bleeding</li><li>hyperthermia</li><li>metabolic acidosis</li><li>rhabdomyolysis</li></ul><br>Management of cocaine toxicity<br><ul><li>in general, <span class="concept" data-cid="9124">benzodiazepines are generally first-line for most cocaine-related problems</span></li><li>chest pain: <span id="concept_popover_id_2594" class="concept concept-0 trigger-link" data-cid="2594" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2594'>You've never been tested on this concept</div><br><div id='div_concept_rating2594' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(5,255,0)'>Importance: <b>99</b></span> </div>" data-original-title="Patients with MI secondary to cocaine use should be given IV benzodiazepines as part of acute (ACS) treatment">benzodiazepines</span> + glyceryl trinitrate. If myocardial infarction develops then primary percutaneous coronary intervention</li><li>hypertension: benzodiazepines + sodium nitroprusside</li><li>the use of <span class="concept" data-cid="945">beta-blockers</span> in cocaine-induced cardiovascular problems is a controversial issue. The American Heart Association issued a statement in 2008 warning against the use of beta-blockers (due to the risk of unopposed alpha-mediated coronary vasospasm) but many cardiologists since have questioned whether this is valid. If a reasonable alternative is given in an exam it is probably wise to choose it</li></ul></div>
* Cochlear implants can be used as unilateral or bilateral adjuncts to hearing loss.
* They are very expensive and therefore the decision to offer them to patient can be delayed due to funding issues.
* The insertion of the implants takes place under general anaesthetic and involves the insertion of the implant through the skull into the cochlear.
* This brings with it risks
** of damage to local structures (such as the facial nerve)
** of introducing infection (Meningitis)
** of reaction to the foreign body (granuloma formation)
** Tinnitus is also a recognised complication.
<div id="notecontent">The decision of whether to start a women on the combined oral contraceptive pill is now guided by the UK Medical Eligibility Criteria (UKMEC). This scale categorises the potential cautions and contraindications according to a four point scale, as detailed below:<br><ul><li>UKMEC 1: a condition for which there is no restriction for the use of the contraceptive method</li><li>UKMEC 2: advantages generally outweigh the disadvantages</li><li>UKMEC 3: disadvantages generally outweigh the advantages</li><li>UKMEC 4: represents an unacceptable health risk</li></ul><br>Examples of UKMEC 3 conditions include<br><ul><li><span class="concept" data-cid="7378">more than 35 years old and smoking less than 15 cigarettes/day</span></li><li><span class="concept" data-cid="7379">BMI > 35 kg/m^2</span>*</li><li><span class="concept" data-cid="7380">family history of thromboembolic disease in first degree relatives < 45 years</span></li><li><span class="concept" data-cid="7381">controlled hypertension</span></li><li><span class="concept" data-cid="3569">immobility e.g. wheel chair use</span></li><li><span class="concept" data-cid="7410">carrier of known gene mutations associated with breast cancer (e.g. BRCA1/BRCA2)</span></li><li><span class="concept" data-cid="10004">current gallbladder disease</span></li></ul><br>Examples of UKMEC 4 conditions include <br><ul><li><span class="concept" data-cid="7384">more than 35 years old and smoking more than 15 cigarettes/day</span></li><li><span class="concept" data-cid="4289">migraine with aura</span></li><li><span class="concept" data-cid="7386">history of thromboembolic disease or thrombogenic mutation</span></li><li><span class="concept" data-cid="7387">history of stroke or ischaemic heart disease</span></li><li><span class="concept" data-cid="1103">breast feeding < 6 weeks post-partum</span></li><li><span class="concept" data-cid="7389">uncontrolled hypertension</span></li><li><span class="concept" data-cid="7390">current breast cancer</span></li><li><span class="concept" data-cid="7391">major surgery with prolonged immobilisation</span></li></ul><br>Diabetes mellitus diagnosed > 20 years ago is classified as UKMEC 3 or 4 depending on severity<br><br>Changes in 2016<br><ul><li><span class="concept" data-cid="7383">breast feeding 6 weeks - 6 months postpartum</span> was changed from UKMEC 3 → 2</li></ul></div>
---
!!FSRH Categorization
The Faculty of Sexual and Reproductive Healthcare (FSRH) categorise risk factors on a scale of 1 to 4 as follows:
# no restrictions on the use of contraceptive method
# advantages of contraceptive method generally outweigh the theoretical and proven risks
# theoretical and proven risks generally outweigh the advantages of the contraceptive method, can still be given based on expert clinical judgement
# condition that poses unacceptable risk if the contraceptive method is used
Absolute contra-indications for the combined oral contraceptive pill (category 4) include:
* Migraine with aura
* Breastfeeding <6 weeks post-partum
* Age 35 or over smoking 15 or more cigarettes/day
* Systolic 160mmHg or diastolic 95mmHg
* Vascular disease
* History of VTE
* Current VTE (on anticoagulants)
* Major surgery with prolonged immobilisation
* Known thrombogenic mutations
* Current and history of ischaemic heart disease
* Stroke (including TIA)
* Complicated valvular and congenital heart disease
* Current breast cancer
* Nephropathy/retinopathy/neuropathy
* Other vascular disease
* Severe (decompensated) cirrhosis
* Hepatocellular adenoma
* Hepatoma
* Raynaud's disease with lupus anticoagulant
* Positive antiphospholipid antibodies
Women who are considering taking the combined oral contraceptive pill (COC) should be counselled in a number of areas:
Potential harms and benefits, including
* the COC is > 99% effective if taken correctly
* small risk of blood clots
* very small risk of heart attacks and strokes
* increased risk of breast cancer and cervical cancer
Advice on taking the pill, including
* if the COC is started within the first 5 days of the cycle then there is no need for additional contraception. If it is started at any other point in the cycle then alternative contraception should be used (e.g. condoms) for the first 7 days
* should be taken at the same time every day
* the COCP is conventionally taken for 21 days then stopped for 7 days - similar uterine bleeding to menstruation. However, there was a major change following the 2019 guidelines. 'Tailored' regimes should now be discussed with women. This is because there is no medical benefit from having a withdrawal bleed. Options include never having a pill-free interval or 'tricycling' - taking three 21 day packs back-to-back before having a 4 or 7 day break
* advice that intercourse during the pill-free period is only safe if the next pack is started on time
Discussion on situations where efficacy may be reduced*
* if vomiting within 2 hours of taking COC pill
* medication that induce diarrhoea or vomiting may reduce effectiveness of oral contraception (for example orlistat)
* if taking liver enzyme-inducing drugs
Other information
* discussion on STIs
*Concurrent antibiotic use
* for many years doctors in the UK have advised that the concurrent use of antibiotics may interfere with the enterohepatic circulation of oestrogen and thus make the combined oral contraceptive pill ineffective - 'extra-precautions' were advised for the duration of antibiotic treatment and for 7 days afterwards
* no such precautions are taken in the US or the majority of mainland Europe
* in 2011 the Faculty of Sexual & Reproductive Healthcare produced new guidelines abandoning this approach. The latest edition of the BNF has been updated in line with this guidance
* precautions should still be taken with enzyme inducing antibiotics such as rifampicin
<div id="notecontent">Advantages of combined oral contraceptive pill<br><ul><li>highly effective (failure rate < 1 per 100 woman years)</li><li>doesn't interfere with sex</li><li>contraceptive effects reversible upon stopping</li><li>usually makes periods regular, lighter and less painful</li><li>reduced risk of <span id="concept_popover_id_246" class="concept concept-1 trigger-link" data-cid="246" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative246'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating246' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(86,255,0)'>Importance: <b>83</b></span> </div>" data-original-title="Combined oral contraceptive pill
- increased risk of breast and cervical cancer
- protective against ovarian and endometrial cancer">ovarian, endometrial</span> - this effect may last for several decades <span class="concept" data-cid="1397">after cessation</span></li><li>reduced risk of <span class="concept" data-cid="8879">colorectal cancer</span></li><li>may protect against pelvic inflammatory disease</li><li>may reduce ovarian cysts, benign breast disease, acne vulgaris</li></ul><br>Disadvantages of combined oral contraceptive pill<br><ul><li>people may forget to take it</li><li>offers no protection against sexually transmitted infections</li><li>increased risk of venous thromboembolic disease</li><li>increased risk of <span id="concept_popover_id_246" class="concept concept-1 trigger-link" data-cid="246" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative246'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating246' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(86,255,0)'>Importance: <b>83</b></span> </div>" data-original-title="Combined oral contraceptive pill
- increased risk of breast and cervical cancer
- protective against ovarian and endometrial cancer">breast and cervical cancer</span></li><li>increased risk of stroke and ischaemic heart disease (especially in smokers)</li><li>temporary side-effects such as headache, nausea, breast tenderness may be seen</li></ul><br>Whilst some users report weight gain whilst taking the combined oral contraceptive pill a Cochrane review did not support a causal relationship.</div>
<div id="notecontent">Coeliac disease is caused by sensitivity to the protein gluten. Repeated exposure leads to villous atrophy which in turn causes malabsorption. Children normally present before the age of 3 years, following the introduction of cereals into the diet<br><br>Genetics<br><ul><li>incidence of around 1:100</li><li>it is strongly associated with HLA-DQ2 (95% of patients) and HLA-DQ8 (80%)</li></ul><br>Features may coincide with the introduction of cereals (i.e. gluten)<br><ul><li>failure to thrive</li><li>diarrhoea</li><li>abdominal distension</li><li>older children may present with anaemia</li><li>many cases are not diagnosed to adulthood</li></ul><br>Diagnosis<br><ul><li>jejunal biopsy showing subtotal villous atrophy</li><li>anti-endomysial and anti-gliadin antibodies are useful screening tests</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb077b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb077.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb077b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Duodenal biopsy from a patient with coeliac disease. Complete atrophy of the villi with flat mucosa and marked crypt hyperplasia. Intraepithelial lymphocytosis. Dense mixed inflammatory infiltrate in the lamina propria.<br></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb078b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb078.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb078b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Duodenal biopsy from a patient with coeliac disease. Flat mucosa with hyperplastic crypts and dense cellular infiltrate in the lamina propria. Increased number of intraepithelial lymphocytes and vacuolated superficial epithelial cell vacuolated superficial epithelial cells. Higher magnification image on the right.<br></div></div>
<div id="body_content">
It is currently thought there are three types of colon cancer:<br><ul><li>sporadic (95%)</li><li>hereditary non-polyposis colorectal carcinoma (HNPCC, 5%)</li><li>familial adenomatous polyposis (FAP, <1%)</li></ul><br>Studies have shown that sporadic colon cancer may be due to a series of genetic mutations. For example, more than half of colon cancers show allelic loss of the APC gene. It is believed a further series of gene abnormalities e.g. activation of the K-ras oncogene, deletion of p53 and DCC tumour suppressor genes lead to invasive carcinoma<br><br>HNPCC, an autosomal dominant condition, is the <span class="concept" data-cid="4517">most common form of inherited colon cancer</span>. <span class="concept" data-cid="10794">Around 90% of patients develop cancers</span>, often of the proximal colon, which are usually poorly differentiated and highly aggressive. Currently seven mutations have been identified, which affect genes involved in DNA mismatch repair leading to microsatellite instability. The most common genes involved are:<br><ul><li>MSH2 (60% of cases)</li><li>MLH1 (30%)</li></ul><br>Patients with HNPCC are also at a higher risk of other cancers, with <span class="concept" data-cid="704">endometrial cancer</span> being the next most common association, after colon cancer.<br><br>The Amsterdam criteria are sometimes used to aid diagnosis:<br><ul><li>at least 3 family members with colon cancer</li><li>the cases span at least two generations</li><li>at least one case diagnosed before the age of 50 years</li></ul><br>FAP is a rare <span class="concept" data-cid="6253">autosomal dominant</span> condition which leads to the formation of <span class="concept" data-cid="10796">hundreds of polyps</span> by the age of 30-40 years. Patients inevitably develop carcinoma. It is due to a mutation in a tumour suppressor gene called <span class="concept" data-cid="7569">adenomatous polyposis coli gene (APC)</span>, located on chromosome 5. Genetic testing can be done by analysing DNA from a patient's white blood cells. Patients generally have a total colectomy with ileo-anal pouch formation in their twenties. <br><br>Patients with FAP are also at risk from duodenal tumours. A variant of FAP called Gardner's syndrome can also feature osteomas of the skull and mandible, retinal pigmentation, thyroid carcinoma and epidermoid cysts on the skin</div>
| !BOWEL PREPARATION BEFORE COLONOSCOPY DRUGS |<|
|Polyethylene glycol|Laxopeg sachet 17 gm ,Mix in 250 ml of clear liquid and administer the entire mixture every 10 minutes until 2 L are consumed (start within 6 hours after administering 20 mg bisacodyl)<br>''6-12 m:'' 4 gm daily (¼ sach daily); <br>''1-3 yrs:'' 6 gm OD (⅓ sach); <br>''4-7 yrs:'' 12 gm OD (¾ sach); <br>''>8 yrs:'' 17 gm OD (1 sach)|
<div id="notecontent">Overview<br><ul><li>most cancers develop from adenomatous polyps. Screening for colorectal cancer has been shown to reduce mortality by 16%</li><li>the NHS offers home-based, <b>Faecal Immunochemical Test (FIT)</b> screening to older adults</li><li>another type of screening is also being rolled out - a <b>one-off flexible sigmoidoscopy</b></li></ul><br><br><b>Faecal Immunochemical Test (FIT) screening</b><br><br>Key points<br><ul><li>the NHS now has a national screening programme offering screening every 2 years to all men and women aged 60 to 74 years in England, 50 to 74 years in Scotland. <span class="concept" data-cid="9760">Patients aged over 74 years may request screening</span></li><li>eligible patients are sent Faecal Immunochemical Test (FIT) tests through the post</li><li>a type of faecal occult blood (FOB) test which uses antibodies that specifically recognise human haemoglobin (Hb)</li><li>used to detect, and can quantify, the amount of human blood in a single stool sample</li><li>advantages over conventional FOB tests is that it <span class="concept" data-cid="9696">only detects human haemoglobin</span>, as opposed to animal haemoglobin ingested through diet</li><li>only one faecal sample is needed compared to the 2-3 for conventional FOB tests</li><li>whilst a numerical value is generated, this is not reported to the patient or GP, who will instead be informed if the test is normal or abnormal</li><li>patients with abnormal results are offered a colonoscopy</li></ul><br>At colonoscopy, approximately:<br><ul><li>5 out of 10 patients will have a normal exam</li><li>4 out of 10 patients will be found to have polyps which may be removed due to their premalignant potential</li><li>1 out of 10 patients will be found to have cancer</li></ul><br><br><b>Flexible sigmoidoscopy screening</b><br><br>Key points<br><ul><li><span class="concept" data-cid="9757">screening for bowel cancer using sigmoidoscopy is being rolled out as part of the NHS screening program</span></li><li><span class="concept" data-cid="5497">the aim (other than to detect asymptomatic cancers) is to allow the detection and treatment of polyps, reducing the future risk of colorectal cancer</span></li><li>this is being offered to people who are <span class="concept" data-cid="9758">55-years-old</span></li><li>NHS patient information leaflets refer to this as 'bowel scope screening'</li><li><span class="concept" data-cid="9759">patients can self-refer for bowel screening with sigmoidoscopy up to the age of 60, if the offer of routine one-off screening at age 55 had not been taken up</span></li></ul></div>
!!!<center>''COMA, CONFUSION, ACUTE MENTAL STATUS CHANGES
''</center>
<hr>
//Scenario: You are called to the emergency room to evaluate a 63 year old man with confusion and lethargy.
//
* Immediate Questions
* What are the patient’s vital signs?
* ABC management first
* If vitals unstable send to ICU immediately.
* Get RBS: hypo/hyperglycemia; if hypo give 25%D, if hyper check ketones.
* Get ECG STAT
* Fever? Get CXR, Urine RE, LP if suspecting meningitis
* What is the time course of the mental status alteration? Is this longstanding or recurrent?
* Any dementia or psychiatric illness?
* Medications, especially in the elderly?
* Trauma, headache, hemiparesis, ataxia, or vomiting? Get NCCT head
* Any H/O CKD, CLD, CAD, DM, COPD or hypothyroidism
* Respiratory failure with hypoxemia: get CXR, ABG, Intubate if necessary
* Any seizures? Seizure protocol
* Send labs: CBC, KFT, LFT, TSH, ABG
* Hypothermia/Hyperthermia in heat stroke
* Sepsis?
* Cerebrovascular accident? Cet CT head
* Syncope: get ECG
* Check pupils, Do a quick neuro exam, GCS, oculocephalic reflex?
* Can this be poisoning?
* Any chance of MLC?
The sciatic nerve divides into the tibial and common peroneal nerves. Injury often occurs at the neck of the fibula
The most characteristic feature of a common peroneal nerve lesion is foot drop.
Other features include:
* weakness of foot dorsiflexion
* weakness of foot eversion
* weakness of extensor hallucis longus
* sensory loss over the dorsum of the foot and the lower lateral part of the leg
* wasting of the anterior tibial and peroneal muscles
The law around consent in children is complicated. However, as a rough guide:
* patients less than 16 years old may consent to treatment if they are deemed to be competent (an example is the Fraser guidelines, previously termed Gillick competence), but cannot refuse treatment which may be deemed in their best interest
* between the ages of 16-18 years it is presumed patients are competent to give consent to treatment
* patients 18 years or older may consent to treatment or refuse treatment
With regards to the provision of contraceptives to patients under 16 years of age the Fraser Guidelines state that all the following requirements should be fulfilled:
* the young person understands the professional's advice
* the young person cannot be persuaded to inform their parents
* the young person is likely to begin, or to continue having, sexual intercourse with or without contraceptive treatment
* unless the young person receives contraceptive treatment, their physical or mental health, or both, are likely to suffer
* the young person's best interests require them to receive contraceptive advice or treatment with or without parental consent
>SWEET 16
!!!<center>''CONSTIPATION''</center>
<hr>
* Scenario: A 75-year-old bedridden woman was admitted with dehydration and a urinary tract infection. She has not had a bowel movement in 7 days.
* Immediate Questions
* What are the patient’s normal bowel habits?
* Normal bowel habits vary from three stools per day to three stools per week.
* What medications is the patient taking?
* Is the abdomen distended, tender, or tense? Is the patient passing flatus or vomiting?
* Rule out Intestinal obstruction (obstipation) from sigmoid volvulus, intussusception, and hernia
* Any H/O of hemorrhoids or rectal bleeding?
* Has the patient undergone any recent radiographic or surgical procedures?
* Postoperative ileus?
* What is the patient’s fluid status?
* Decrease in fluid intake or increase in diuretic use, especially in the elderly patient, can cause constipation.
* Any H/O DM, IBS, Spinal or pelvic trauma or CVA
* Check K,Ca, Mg, CBC, stool occult blood
* Examine abdomen, BS, palpation, tenderness?
* Rectal exam (hemorrhoids or fissures)
* X-ray abdomen erect if suspecting acute obstruction
* Acute constipation:
* PC enema STAT
* Bisacodyl: Tab Dulcolax 5 mg 1-2 tab STAT;
* Rectal supp: Dulcolax 10 mg STAT
* Mag hydroxide: Syr Cremaffin 30ml STAT HS
* Polyethylene glycol: Laxopeg sachet, dissolve in 1 glass of water daily
* Sodium picosulphate: Tab Cremalax 10 mg HS
* Lactulose (Syr Duphalac) 15–30 mL BD
* Digital disimpaction is occasionally required when hard stool will not pass through the rectum.
* Proctosigmoidoscopy. To further assess the colon for obstructing or inflammatory lesions.
* Colonoscopy. if colon carcinoma or polyps are suspected.
* CT scan of abdomen. To further evaluate for partial obstruction
<div class="twocolumns">
<$list filter="[tag[Contents]sort[title]]"/>
</div>
<div id="body_content">
The development of effective methods of contraception over the past 50 years has been one of the most significant developments in medicine.<br><br><br><b>Methods of contraception</b><br><br>Barrier methods<br><ul><li>condoms</li></ul><br>Daily methods<br><ul><li>combined oral contraceptive pill</li><li>progesterone only pill</li></ul><br>Long-acting methods of reversible contraception (LARCs)<br><ul><li>implantable contraceptives</li><li>injectable contraceptives</li><li>intrauterine system (IUS): progesterone releasing coil</li><li>intrauterine device (IUD): copper coil</li></ul><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Contraceptive</th><th>Method of action</th><th>Notes</th></tr></thead><tbody><tr><td>Condoms</td><td><span class="concept" data-cid="8475">Physical barrier</span></td><td>Relatively low success rate, particularly when used by young people<br>Help protects against STIs</td></tr><tr><td>Combined oral contraceptive pill</td><td><span class="concept" data-cid="8476">Inhibits ovulation</span></td><td>Increases risk of venous thromboembolism<br>Increases risk of breast and cervical cancer</td></tr><tr><td>Progestogen-only pill (excluding desogestrel*)</td><td><span class="concept" data-cid="8477">Thickens cervical mucus</span></td><td>Irregular bleeding a common side-effect</td></tr><tr><td>Injectable contraceptive (medroxyprogesterone acetate)</td><td>Primary: <span class="concept" data-cid="8478">Inhibits ovulation</span> <br>Also: thickens <span class="concept" data-cid="8478">cervical mucus</span></td><td>Lasts 12 weeks</td></tr><tr><td>ImplantableContraceptive (etonogestrel)</td><td>Primary: <span class="concept" data-cid="8479">Inhibits ovulation</span> <br>Also: <span class="concept" data-cid="8479">thickens cervical mucus</span></td><td>Irregular bleeding a common side-effect<br>Last 3 years</td></tr><tr><td>[[Intrauterine contraceptive device|IUCD]]</td><td><span class="concept" data-cid="8480">Decreases sperm motility and survival</span></td><td></td></tr><tr><td>[[Intrauterine system (levonorgestrel)|IUCD]]</td><td>Primary: <span class="concept" data-cid="8481">Prevents endometrial proliferation</span><br>Also: <span class="concept" data-cid="8481">Thickens cervical mucus</span></td><td>Irregular bleeding a common side-effect</td></tr></tbody></table></div><br>*desogestrel is a type of progestogen-only pill which also inhibits ovulation</div>
---
<div id="body_content">
The table below is based on documents produced by the Faculty for Sexual and Reproductive Health (FSRH).<br><br>Standard contraceptives:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Contraceptive</th><th>Mode of action</th></tr></thead><tbody><tr><td>Combined oral contraceptive pill</td><td><span class="concept" data-cid="7787">Inhibits ovulation</span></td></tr><tr><td>Progestogen-only pill (excluding desogestrel)</td><td><span class="concept" data-cid="7788">Thickens cervical mucus</span></td></tr><tr><td>Desogestrel-only pill</td><td><span class="concept" data-cid="7789">Primary: Inhibits ovulation</span> <br>Also: thickens cervical mucus</td></tr><tr><td>Injectable contraceptive (medroxyprogesterone acetate)</td><td><span class="concept" data-cid="7790">Primary: Inhibits ovulation</span> <br>Also: thickens cervical mucus</td></tr><tr><td>Implantable contraceptive (etonogestrel)</td><td><span class="concept" data-cid="1099">Primary: Inhibits ovulation</span><br>Also: thickens cervical mucus</td></tr><tr><td>[[Intrauterine contraceptive device|IUCD]]</td><td><span class="concept" data-cid="7795">Decreases sperm motility and survival</span></td></tr><tr><td>[[Intrauterine system (levonorgestrel)|IUCD]]</td><td>Primary: <span class="concept" data-cid="7792">Prevents endometrial proliferation</span><br>Also: Thickens cervical mucus</td></tr></tbody></table></div><br>Methods of emergency contraception:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Contraceptive</th><th>Mode of action</th></tr></thead><tbody><tr><td>Levonorgestrel</td><td><span class="concept" data-cid="7793">Inhibits ovulation</span></td></tr><tr><td>Ulipristal</td><td><span class="concept" data-cid="7794">Inhibits ovulation</span></td></tr><tr><td>Intrauterine contraceptive device</td><td>Primary: Toxic to sperm and ovum<br>Also: Inhibits implantation</td></tr></tbody></table></div></div>
---
>Prevent Ovulation - Thick mucus
*[[COCP]] - Desogestrel (exception to [[POP]]) - Implantable Progesterone - Injectable Progesterone
---
>LIV ON - SYSTEMATICALLY Kills Endometrium - Acutely inhibits Ovulation
* Emergency Inhibits
* Intra Uterine SYSTEM: Toxic and Inhibits
---
>DESgestrel pill - DI actions
*POP that acts like COCP
---
>IUD in EMERGENCY kills both OVUM and SPERM - NORMALLY kills only SPERM
---
> INJECTION 3 months - IMPLANT 3 years - LIVON LIVES for 5 years
* Injectable lasts 3 months(can't be reversed) - Implant lasts 3 years (can be removed) - Levonorgestrel (Mirena) lasts 5 years
---
!! Contraception in EpiLepsy
{{EpiLepsy ContraCeption}}
---
!! Contraception when taking Enzyme Inducing Drugs
{{EID ContraCeption}}
<div id="notecontent">Acute exacerbations of COPD are one of the most common reasons why people present to hospital in developed countries.<br><br>Features<br><ul><li>increase in dyspnoea, cough, wheeze</li><li>there may be an increase in sputum suggestive of an infective cause</li><li>patients may be hypoxic and in some cases have acute confusion</li></ul><br>The most common bacterial organisms that cause infective exacerbations of COPD are:<br><ul><li><span id="concept_popover_id_5077" class="concept concept-3-u trigger-link" data-cid="5077" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5077'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating5077' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(35,255,0)'>Importance: <b>93</b></span> </div>" data-original-title="The most common organism causing infective exacerbations of COPD is <i>Haemophilus influenzae</i>"><i>Haemophilus influenzae</i> (most common cause)</span></li><li><i>Streptococcus pneumoniae</i></li><li><i>Moraxella catarrhalis</i></li></ul><br>Respiratory viruses account for around 30% of exacerbations, with the human rhinovirus being the most important pathogen.<br><br>NICE guidelines from 2010 recommend the following:<br><ul><li>increase frequency of bronchodilator use and consider giving via a nebuliser</li><li>give prednisolone 30 mg daily for <span class="concept" data-cid="10968">5 days</span></li><li>it is common practice for all patients with an exacerbation of COPD to receive antibiotics. NICE do not support this approach. They recommend giving oral antibiotics <span class="concept" data-cid="7722">'if sputum is purulent or there are clinical signs of pneumonia'</span></li><li>the BNF recommends one of the following oral antibiotics first-line: <span class="concept" data-cid="6117">amoxicillin or clarithromycin or doxycycline.</span></li></ul></div>
`The most common organism causing infective exacerbations of COPD is Haemophilus influenzae. If the patient had pneumonia(consolidation on CXR) then Streptococcus pneumoniae would be the most likely causative organism.`
---
!!!<center>''COPD EXACERBATION''</center>
<hr>
* Uncomplicated: Doxy 100 BD 5d OR Bactrim DS BD OR Amox 500 TDS;
* Complicated: Azithro 500 mg PO/IV Q24H 3d OR Levoflox 750/Moxiflox 400 OD IV 7ds OR Amox-clav 1g BD 5d OR OR Cefpodox 200 BD 5d
!!!<center>''COPD EXACERBATION''</center>
<hr>
* Access ABC, secure as necessary
* ABG on admission (unless already done)
* CXR STAT
* Propped up position
* Oxygen 2 LPM per nasal cannula (titrate to keep O2 sats 88 to 92% or PaO2 of 60 to 70 mmHg)
* Consider BIPAP if:pH between 7.35 and 7.25, PaCO2 > 45 & < 60 mmHg, RR between 24 -35.
* Start BIPAP at 8/3
* Repeat ABG as needed
* Inj NS @ 75 ml/hr if required and patient is NPO
* Nebs Duolin 3mL q30min × 3, then q4hq4h and sos SOB.
* Inj Hydrocortisone 100 mg IV q8h
* Inj Methylprednisolone 2mg/kg(max:125mg) IV q6h
* Tab Wysolone 40 mg OD
* Inj Monocef 1 gm IV q12h
* Inj Augmentin 1.2 mg IV q12h
* Inj Pip-taz 4.5 IV q8h (Pseudomonas)
* Tab Oseltamivir 75 mg BD
* Labs: CBC, KFT, LFT, SPUTUM RE, AFB, CXR-PA, ECG
* Obtain ECG: Look for arrhythmia, ischemia, cor pulmonale
* Intubate if necessary
* Intubate with #8 ETT
* SIMV, TV: 6-8 mL/kg, RR 10-12/min, PEEP 5
* Mucinac may help
* Don't give Deriphyllin
* Chest physiotherapy not beneficial
* Test for influenza infection during influenza season
* Smoking cessation
* Pulmonary rehabilitation
* Proper use of medications (including Inhalers)
* Vaccination against seasonal influenza and pneumococcus.
<div id="body_content">
NICE recommend considering a diagnosis of COPD in patients over 35 years of age who are smokers or ex-smokers and have symptoms such as exertional breathlessness, chronic cough or regular sputum production.<br><br>The following investigations are recommended in patients with suspected COPD:<br><ul><li>post-bronchodilator spirometry to demonstrate airflow obstruction: FEV1/FVC ratio less than 70%</li><li>chest x-ray: hyperinflation, bullae, flat hemidiaphragm. Also important to exclude lung cancer</li><li>full blood count: exclude secondary polycythaemia</li><li>body mass index (BMI) calculation</li></ul><br>The severity of COPD is categorised using the FEV1*:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Post-bronchodilator FEV1/FVC</b></th><th><b>FEV1 (of predicted)</b></th><th><b>Severity</b></th></tr></thead><tbody><tr><td> < 0.7</td><td>> 80%</td><td>Stage 1 - Mild**</td></tr><tr><td> < 0.7</td><td>50-79%</td><td>Stage 2 - Moderate</td></tr><tr><td> < 0.7</td><td>30-49%</td><td>Stage 3 - Severe</td></tr><tr><td> < 0.7</td><td>< 30%</td><td>Stage 4 - Very severe</td></tr></tbody></table></div><br>Measuring peak expiratory flow is of limited value in COPD, as it may underestimate the degree of airflow obstruction.<br><br>*note that the grading system has changed following the 2010 NICE guidelines. If the FEV1 is greater than 80% predicted but the post-bronchodilator FEV1/FVC is < 0.7 then this is classified as Stage 1 - mild<br><br>**symptoms should be present to diagnose COPD in these patients</div>
<div id="notecontent">NICE recommend considering a diagnosis of COPD in patients over 35 years of age who are smokers or ex-smokers and have symptoms such as exertional breathlessness, chronic cough or regular sputum production.<br><br>The following investigations are recommended in patients with suspected COPD:<br><ul><li>post-bronchodilator spirometry to demonstrate airflow obstruction: FEV1/FVC ratio less than 70%</li><li>chest x-ray: hyperinflation, bullae, flat hemidiaphragm. Also important to exclude lung cancer</li><li>full blood count: exclude secondary polycythaemia</li><li>body mass index (BMI) calculation</li></ul><br>The severity of COPD is categorised using the FEV1*:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Post-bronchodilator FEV1/FVC</b></th><th><b>FEV1 (of predicted)</b></th><th><b>Severity</b></th></tr></thead><tbody><tr><td> < 0.7</td><td>> 80%</td><td>Stage 1 - Mild**</td></tr><tr><td> < 0.7</td><td>50-79%</td><td>Stage 2 - Moderate</td></tr><tr><td> < 0.7</td><td>30-49%</td><td>Stage 3 - Severe</td></tr><tr><td> < 0.7</td><td>< 30%</td><td>Stage 4 - Very severe</td></tr></tbody></table></div><br>Measuring peak expiratory flow is of limited value in COPD, as it may underestimate the degree of airflow obstruction.<br><br>*note that the grading system has changed following the 2010 NICE guidelines. If the FEV1 is greater than 80% predicted but the post-bronchodilator FEV1/FVC is < 0.7 then this is classified as Stage 1 - mild<br><br>**symptoms should be present to diagnose COPD in these patients</div>
---
><0.7 is Diagnostic - 358 for Classification
*<0.7 post-bronchodilator for Diagnosis - <30 %- >30% - >50% - >80% for Classification
---
<div id="passmedicine-body">NICE updated its guidelines on the management of chronic obstructive pulmonary disease (COPD) in 2018.<br><br>General management<br><ul><li><span class="concept" data-cid="4006">>smoking cessation</span> advice: including offering nicotine replacement therapy, varenicline or bupropion</li><li>annual influenza vaccination</li><li>one-off pneumococcal vaccination</li><li><span class="concept" data-cid="3990">pulmonary rehabilitation</span> to all people who view themselves as functionally disabled by COPD (usually Medical Research Council [MRC] grade 3 and above)</li></ul><br>Bronchodilator therapy<br><ul><li><span id="concept_popover_id_1499" class="concept concept-0 trigger-link" data-cid="1499" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1499'>You've never been tested on this concept</div><br><div id='div_concept_rating1499' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(127,255,0)'>Importance: <b>75</b></span> </div>" data-original-title="A SABA or SAMA is the first-line pharmacological treatment of COPD">a short-acting beta2-agonist (SABA) or short-acting muscarinic antagonist (SAMA) is first-line treatment</span></li><li>for patients who remain breathless or have exacerbations despite using short-acting bronchodilators the next step is determined by whether the patient has <i>'asthmatic features/features suggesting steroid responsiveness'</i></li></ul><br>There are a <span class="concept" data-cid="9525">number of criteria NICE suggest to determine whether a patient has asthmatic/steroid responsive features:</span><br><ul><li>any previous, secure diagnosis of asthma or of atopy</li><li>a higher blood eosinophil count - note that NICE recommend a full blood count for all patients as part of the work-up</li><li>substantial variation in FEV1 over time (at least 400 ml)</li><li>substantial diurnal variation in peak expiratory flow (at least 20%)</li></ul><br>Interestingly NICE do not recommend formal reversibility testing as one of the criteria. In the guidelines they state that <i>'routine spirometric reversibility testing is not necessary as part of the diagnostic process or to plan initial therapy with bronchodilators or corticosteroids. It may be unhelpful or misleading...'</i>. They then go on to discuss why they have reached this conclusion. Please see the guidelines for more details.<br><br>No asthmatic features/features suggesting steroid responsiveness<br><ul><li><span class="concept" data-cid="889">add a long-acting beta2-agonist (LABA) + long-acting muscarinic antagonist (LAMA)</span><ul><li><span class="concept" data-cid="7723">if already taking a SAMA, discontinue and switch to a SABA</span></li></ul></li></ul><br>Asthmatic features/features suggesting steroid responsiveness<br><ul><li><span id="concept_popover_id_890" class="concept concept-1 trigger-link" data-cid="890" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative890'>You've been tested on this concept once, 21 hours ago, and got the associated question incorrect.</div><br><div id='div_concept_rating890' class='text-right' style ='font-size:90%;'>You've rated this <span style='color:green'>important</span> <br><span style = 'border-bottom: 5px solid rgb(239,255,0)'>Importance: <b>53</b></span> </div>" data-original-title="COPD - still breathless despite using SABA/SAMA and <b>asthma/steroid responsive features</b> --> add a LABA + ICS">LABA + inhaled corticosteroid (ICS)</span></li><li>if patients remain breathless or have exacerbations offer <span id="concept_popover_id_7505" class="concept concept-1 trigger-link" data-cid="7505" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7505'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating7505' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(254,255,0)'>Importance: <b>50</b></span> </div>" data-original-title="COPD - still breathless despite using SABA/SAMA and a LABA + ICS --> add a LAMA">triple therapy i.e. LAMA + LABA + ICS</span><ul><li><span class="concept" data-cid="7723">if already taking a SAMA, discontinue and switch to a SABA</span></li></ul></li><li>NICE recommend the use of combined inhalers where possible</li></ul><br>Oral theophylline<br><ul><li>NICE only recommends theophylline after trials of short and long-acting bronchodilators or to people who cannot used inhaled therapy</li><li>the dose should be reduced if macrolide or fluoroquinolone antibiotics are co-prescribed</li></ul><br>Oral prophylactic antibiotic therapy<br><ul><li><span id="concept_popover_id_9761" class="concept concept-0 trigger-link" data-cid="9761" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9761'>You've never been tested on this concept</div><br><div id='div_concept_rating9761' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="Azithromycin prophylaxis is recommended in COPD patients who meet certain criteria and who continue to have exacerbations">azithromycin prophylaxis is recommended in select patients</span></li><li>patients <span class="concept" data-cid="10638">should not smoke</span>, have optimised standard treatments and continue to have exacerbations</li><li>other prerequisites include a CT thorax (to exclude bronchiectasis) and sputum culture (to exclude atypical infections and tuberculosis)</li><li>LFTs and an <span class="concept" data-cid="9526">ECG to exclude QT prolongation should also be done as azithromycin can prolong the QT interval</span></li></ul><br>Mucolytics<br><ul><li>should be 'considered' in patients with a chronic productive cough and continued if symptoms improve</li></ul><br>Cor pulmonale<br><ul><li>features include peripheral oedema, raised jugular venous pressure, systolic parasternal heave, loud P2</li><li>use a loop diuretic for oedema, consider long-term oxygen therapy</li><li>ACE-inhibitors, calcium channel blockers and alpha blockers are not recommended by NICE</li></ul><br>Factors which may improve survival in patients with stable COPD<br><ul><li>smoking cessation - the single most important intervention in patients who are still smoking </li><li>long term oxygen therapy in patients who fit criteria </li><li>lung volume reduction surgery in selected patients</li></ul></div>
---
According to NICE 2018, ''consider azithromycin (usually 250 mg 3 times a week) for people with COPD if they:''
*do not smoke ''and''
* have optimised non-pharmacological management and inhaled therapies, relevant vaccinations and (if appropriate) have been referred for pulmonary rehabilitation ''and continue to have 1 or more of the following, particularly if they have significant daily sputum production:''
* frequent (typically 4 or more per year) exacerbations with sputum production
* prolonged exacerbations with sputum production
* exacerbations resulting in hospitalisation.
Carbocisteine is an example of a mucolytic agent. The routine usage of mucolytic drugs to prevent exacerbations in people with stable COPD ''is not recommended.'' [ NICE 2010]
Oral codeine phosphate is an example of an anti-tussive agent. Anti-tussive therapy ''should not be used'' in the management of stable COPD. [NICE 2004]
Alpha-tocopherol and beta-carotene supplements are both examples of an anti-oxidant agent. Oral anti-oxidant therapy, alone or in combination, ''is not recommended'' in managing patients with stable COPD. [NICE 2004]
Corneal ulcers are more common in contact lens users
Features
* eye pain
* photophobia
* watering of eye
* focal fluorescein staining of the cornea
`Ocular pain, tearing and photophobia in association with corneal uptake of fluorescein indicates a corneal ulcer`
<div id="body_content">
Corticosteroids are amongst the most commonly prescribed therapies in clinical practice. They are used both systemically (oral or intravenous) or locally (skin creams, inhalers, eye drops, intra-articular). They augment and in some cases replace the natural glucocorticoid and mineralocorticoid activity of endogenous steroids.<br><br>The relative glucocorticoid and mineralocorticoid activity of commonly used steroids is shown below:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Minimal glucocorticoid activity, very high mineralocorticoid activity, </b></th><th><b>Glucocorticoid activity, high mineralocorticoid activity, </b></th><th><b>Predominant glucocorticoid activity, low mineralocorticoid activity</b></th><th><b>Very high glucocorticoid activity, minimal mineralocorticoid activity</b></th></tr></thead><tbody><tr><td>Fludrocortisone</td><td>Hydrocortisone</td><td>Prednisolone</td><td>Dexamethasone<br>Betmethasone</td></tr></tbody></table></div><br><b>Side-effects</b><br><br>The side-effects of corticosteroids are numerous and represent the single greatest limitation on their usage. Side-effects are more common with systemic and prolonged therapy.<br><br>Glucocorticoid side-effects<br><ul><li>endocrine: <span class="concept" data-cid="3342">impaired glucose regulation</span>, <span class="concept" data-cid="6013">increased appetite/weight gain</span>, <span class="concept" data-cid="6014">hirsutism</span>, <span class="concept" data-cid="6015">hyperlipidaemia</span></li><li><span class="concept" data-cid="6016">Cushing's syndrome</span>: moon face, buffalo hump, striae</li><li>musculoskeletal: <span class="concept" data-cid="4392">osteoporosis</span>, <span class="concept" data-cid="6017">proximal myopathy</span>, <span class="concept" data-cid="6018">avascular necrosis of the femoral head</span></li><li>immunosuppression: <span class="concept" data-cid="6019">increased susceptibility to severe infection</span>, <span class="concept" data-cid="6020">reactivation of tuberculosis</span></li><li>psychiatric: <span class="concept" data-cid="6021">insomnia</span>, <span class="concept" data-cid="2128">mania</span>, <span class="concept" data-cid="6022">depression</span>, <span class="concept" data-cid="2848">psychosis</span></li><li>gastrointestinal: <span class="concept" data-cid="6023">peptic ulceration</span>, <span class="concept" data-cid="2995">acute pancreatitis</span></li><li>ophthalmic: <span class="concept" data-cid="6025">glaucoma</span>, <span class="concept" data-cid="6026">cataracts</span></li><li><span class="concept" data-cid="6027">suppression of growth in children</span></li><li><span class="concept" data-cid="6031">intracranial hypertension</span></li><li><span class="concept" data-cid="2394">neutrophilia</span></li></ul><br>Mineralocorticoid side-effects<br><ul><li><span class="concept" data-cid="6028">fluid retention</span></li><li><span class="concept" data-cid="6029">hypertension</span></li></ul><br>Selected points on the use of corticosteroids:<br><ul><li><span class="concept" data-cid="503">patients on long-term steroids should have their doses doubled during intercurrent illness </span> </li><li>the BNF suggests gradual withdrawal of systemic corticosteroids if patients have: received more than 40mg prednisolone daily for more than one week, received more than 3 weeks treatment or recently received repeated courses</li></ul></div>
---
>MINERAL WATER
*FLUID HYDRO are more MINERALOCORTICOID action
---
>ROMANS are POWERFUL and LONG LASTING
*BETA, DEXA(Roman Numerals) are POTENT and LONG acting GLUCOCORTICOIDS
* Dilute Betamethasone is used in skin creams
---
!!!<center>''COUGH''</center>
<hr>
* Is the cough acute or chronic?
* Acute onset of cough most often results from infections such as the common cold, but can result from urgent conditions such as COPD, Asthma, PE, aspiration, CHF
* A chronic cough is unlikely to represent a condition that is an immediate danger to the patient.
* Chronic cough is most often due to postnasal drip, post viral infection, asthma, chronic bronchitis from smoking, or GERD
* Is the cough productive of sputum? If so, what does the sputum look like?
* A productive cough implies an inflammatory condition such as bronchitis, bronchiectasis, pneumonia or TB
* Blood in the sputum? Refer Hemoptysis
* Is the patient tachypneic or dyspneic? Either of these suggests a significant underlying respiratory disease such as pulmonary embolism or pneumonia.
* Is the patient on an ACE inhibitor?
* Common causes:
* ENT: Postnasal drip from allergic and nonallergic rhinitis or sinusitis, common cold, Acute viral laryngitis: I gen antihistamines such as chlorpheniramine. Can give Sinarest
* Bronchospasm; Asthma; dexona, asthalin nebs
* Bronchitis. Both acute and chronic bronchitis
* Pneumonia. Viral, bacterial, tuberculous, and fungal; refer to antibiotics
* GERD: head end elevation, Ranitidine or PPIs
* Stop Smoking
* Congestive heart failure: refer to protocol
* Examine posterior pharynx for evidence of sinusitis or rhinitis (postnasal drip or cobblestoning resulting from lymphoid hyperplasia).
* Sinuses. Check for tenderness or opacification.
* Check Lungs: ronchi, bronchial breath sounds, crackles, wheezing
* Heart. CHF signs
* CBC, ABG if tachypneic or cyanotic.
* Get CXR, Sputum gm stain, AFB
* Give cough syrup and Treat accordingly
<div id="notecontent">Cow's milk protein intolerance/allergy (CMPI/CMPA) occurs in around 3-6% of all children and typically <span class="concept" data-cid="1995">presents in the first 3 months of life in formula-fed infants</span>, although rarely it is seen in <span class="concept" data-cid="1997">exclusively breastfed infants</span>. <br><br>Both immediate (IgE mediated) and delayed (non-IgE mediated) reactions are seen. The term CMPA is usually used for immediate reactions and CMPI for mild-moderate delayed reactions.<br><br>Features<br><ul><li>regurgitation and vomiting</li><li>diarrhoea</li><li>urticaria, atopic eczema</li><li>'colic' symptoms: irritability, crying</li><li>wheeze, chronic cough</li><li>rarely angioedema and anaphylaxis may occur</li></ul><br>Diagnosis is often clinical (e.g. improvement with cow's milk protein elimination). Investigations include:<br><ul><li>skin prick/patch testing</li><li>total IgE and specific IgE (RAST) for cow's milk protein</li></ul><br><b>Management</b><br><br>If the <span class="concept" data-cid="1996">symptoms are severe (e.g. failure to thrive) refer to a paediatrician</span>.<br><br>Management if formula-fed<br><ul><li>extensive hydrolysed formula (eHF) milk is the first-line replacement formula for infants with mild-moderate symptoms</li><li>amino acid-based formula (AAF) in infants with severe CMPA or if no response to eHF</li><li><span class="concept" data-cid="1999">around 10% of infants are also intolerant to soya milk</span></li></ul><br>Management if breastfed<br><ul><li>continue breastfeeding</li><li>eliminate cow's milk protein from maternal diet. <span class="concept" data-cid="9562">Consider prescribing calcium supplements</span> for breastfeeding mothers whose babies have, or are suspected to have, CMPI, to prevent deficiency whilst they exclude dairy from their diet </li><li>use eHF milk when breastfeeding stops, until 12 months of age and at least for 6 months</li></ul><br>CMPI usually resolves in most children<br><ul><li>in children with IgE mediated intolerance around 55% will be milk tolerant by the age of 5 years</li><li><span class="concept" data-cid="1998">in children with non-IgE mediated intolerance most children will be milk tolerant by the age of 3 years</span></li><li>a challenge is often performed in the hospital setting as anaphylaxis can occur.</li></ul></div>
---
The milk ladder can be used after 6 months of age to gradually introduce milk by first introducing cooked or baked milk.
Children start with malted milk biscuits then progress in a step wise fashion towards pasteurised milk.
---
<div id="notecontent">The table below lists the major characteristics of the 12 cranial nerves:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Nerve</b></th><th><b>Functions</b></th><th><b>Clinical</b></th><th><b>Pathway/foramen</b></th></tr></thead><tbody><tr><td>I (Olfactory)</td><td>Smell</td><td></td><td>Cribriform plate</td></tr><tr><td>II (Optic)</td><td>Sight</td><td></td><td>Optic canal</td></tr><tr><td>III (Oculomotor)</td><td>Eye movement (MR, IO, SR, IR)<br>Pupil constriction<br>Accomodation<br>Eyelid opening</td><td>Palsy results in<br><ul><li>ptosis</li><li>'down and out' eye</li><li>dilated, fixed pupil</li></ul></td><td>Superior orbital fissure (SOF)</td></tr><tr><td>IV (Trochlear)</td><td>Eye movement (SO)</td><td>Palsy results in defective downward gaze → vertical diplopia</td><td>SOF</td></tr><tr><td>V (Trigeminal)</td><td>Facial sensation<br>Mastication</td><td>Lesions may cause:<br><ul><li>trigeminal neuralgia</li><li>loss of corneal reflex (afferent)</li><li>loss of facial sensation</li><li>paralysis of mastication muscles</li><li>deviation of jaw to weak side</li></ul></td><td>V<sub>1</sub>: SOF, V<sub>2</sub>: Foramen rotundum, <br>V<sub>3</sub>: Foramen ovale</td></tr><tr><td>VI (Abducens)</td><td>Eye movement (LR)</td><td>Palsy results in defective abduction → horizontal diplopia</td><td>SOF</td></tr><tr><td>VII (Facial)</td><td>Facial movement<br>Taste (anterior 2/3rds of tongue)<br>Lacrimation<br>Salivation</td><td>Lesions may result in:<br><ul><li>flaccid paralysis of upper + lower face</li><li>loss of corneal reflex (efferent)</li><li>loss of taste</li><li>hyperacusis</li></ul></td><td>Internal auditory meatus</td></tr><tr><td>VIII (Vestibulocochlear)</td><td>Hearing, balance</td><td>Hearing loss<br>Vertigo, nystagmus<br>Acoustic neuromas are Schwann cell tumours of the cochlear nerve</td><td>Internal auditory meatus</td></tr><tr><td>IX (Glossopharyngeal)</td><td>Taste (posterior 1/3rd of tongue)<br>Salivation<br>Swallowing <br>Mediates input from carotid body & sinus</td><td>Lesions may result in;<br><ul><li>hypersensitive carotid sinus reflex</li><li>loss of gag reflex (afferent)</li></ul></td><td>Jugular foramen</td></tr><tr><td>X (Vagus)</td><td>Phonation<br>Swallowing<br>Innervates viscera</td><td>Lesions may result in;<br><ul><li>uvula deviates away from site of lesion</li><li>loss of gag reflex (efferent)</li></ul></td><td>Jugular foramen</td></tr><tr><td>XI (Accessory)</td><td>Head and shoulder movement</td><td>Lesions may result in;<br><ul><li>weakness turning head to contralateral side</li></ul></td><td>Jugular foramen</td></tr><tr><td>XII (Hypoglossal)</td><td>Tongue movement</td><td>Tongue deviates towards side of lesion</td><td>Hypoglossal canal</td></tr></tbody></table></div><br>Some cranial nerves are motor, some sensory and some are both. The most useful mnemonic is given below.<br><br><div class="alert alert-warning">CN I ----------------------------------------------------------------------→XII<br><br><b>S</b>ome <b>S</b>ay <b>M</b>arry <b>M</b>oney <b>B</b>ut <b>M</b>y <b>B</b>rother <b>S</b>ays <b>B</b>ig <b>B</b>rains <b>M</b>atter <b>M</b>ost<br><br><b>S</b> = Sensory, <b>M</b> = Motor, <b>B</b> = Both<br></div><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb018b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb018.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb018b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">View from the inferior surface of the brain showing the emergence of the cranial nerves<br></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb019b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb019.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb019b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Diagram showing the nuclei of the cranial nerves in the brainstem<br></div><br><br><b>Cranial nerve reflexes</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Reflex</b></th><th><b>Afferent limb</b></th><th><b>Efferent limb</b></th></tr></thead><tbody><tr><td>Corneal</td><td>Ophthalmic nerve (V<sub>1</sub>)</td><td>Facial nerve (VII)</td></tr><tr><td>Jaw jerk</td><td>Mandibular nerve (V<sub>3</sub>)</td><td>Mandibular nerve (V<sub>3</sub>)</td></tr><tr><td>Gag</td><td>Glossopharyngeal nerve (IX)</td><td>Vagal nerve (X)</td></tr><tr><td>Carotid sinus</td><td>Glossopharyngeal nerve (IX)</td><td>Vagal nerve (X)</td></tr><tr><td>Pupillary light</td><td>Optic nerve (II)</td><td>Oculomotor nerve (III)</td></tr><tr><td>Lacrimation</td><td>Ophthalmic nerve (V<sub>1</sub>)</td><td>Facial nerve (VII)</td></tr></tbody></table></div></div>
---
>SO4 - TETRAchlear Nerve - SULPHATE burns VERTICALLY into tissues
*Superior Oblique by 4^^th^^Nerve - TROchlear - VERTICAL Diplopia
---
!!Eponymous Criteria and Scoring Systems
<div id="notecontent">There are now numerous scoring systems used in medicine. The table below lists some of the more common ones:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Scoring system</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><b><span class="concept" data-cid="6700">CHA<sub>2</sub>DS<sub>2</sub>-VASc</span></b></td><td>Used to determine the need to anticoagulate a patient in atrial fibrillation</td></tr><tr><td><b><span class="concept" data-cid="6701">ABCD2</span></b></td><td>Prognostic score for risk stratifying patients who've had a suspected TIA</td></tr><tr><td><b><span class="concept" data-cid="6702">NYHA</span></b></td><td>Heart failure severity scale</td></tr><tr><td><b><span class="concept" data-cid="5830">DAS28</span></b></td><td>Measure of disease activity in rheumatoid arthritis</td></tr><tr><td><b><span class="concept" data-cid="6704">Child-Pugh classification</span></b></td><td>A scoring system used to assess the severity of liver cirrhosis</td></tr><tr><td><b><span class="concept" data-cid="6705">Wells score</span></b></td><td>Helps estimate the risk of a patient having a deep vein thrombosis</td></tr><tr><td><b><span class="concept" data-cid="6706">MMSE</span></b></td><td>Mini-mental state examination - used to assess cognitive impairment</td></tr><tr><td><b>HAD</b></td><td>Hospital Anxiety and Depression (HAD) scale - assesses severity of anxiety and depression symptoms</td></tr><tr><td><b><span class="concept" data-cid="6707">PHQ-9</span></b></td><td>Patient Health Questionnaire - assesses severity of depression symptoms</td></tr><tr><td><b><span class="concept" data-cid="6708">GAD-7</span></b></td><td>Used as a screening tool and severity measure for generalised anxiety disorder</td></tr><tr><td><b>Edinburgh Postnatal Depression Score</b></td><td>Used to screen for postnatal depression</td></tr><tr><td><b><span class="concept" data-cid="6709">SCOFF</span></b></td><td>Questionnaire used to detect eating disorders and aid treatment</td></tr><tr><td><b><span class="concept" data-cid="6710">AUDIT</span></b></td><td>Alcohol screening tool</td></tr><tr><td><b><span class="concept" data-cid="6711">CAGE</span></b></td><td>Alcohol screening tool</td></tr><tr><td><b><span class="concept" data-cid="6712">FAST</span>*</b></td><td>Alcohol screening tool</td></tr><tr><td><b><span class="concept" data-cid="1469">CURB-65</span></b></td><td>Used to assess the prognosis of a patient with pneumonia</td></tr><tr><td><b><span class="concept" data-cid="6714">Epworth Sleepiness Scale</span></b></td><td>Used in the assessment of suspected obstructive sleep apnoea</td></tr><tr><td><b><span class="concept" data-cid="6715">IPSS</span></b></td><td>International prostate symptom score</td></tr><tr><td><b>Gleason score</b></td><td>Indicates prognosis in prostate cancer</td></tr><tr><td><b><span class="concept" data-cid="6716">APGAR</span></b></td><td>Assesses the health of a newborn immediately after birth</td></tr><tr><td><b><span class="concept" data-cid="6717">Bishop score</span></b></td><td>Used to help assess the whether induction of labour will be required</td></tr><tr><td><b><span class="concept" data-cid="6718">Waterlow score</span></b></td><td>Assesses the risk of a patient developing a pressure sore</td></tr><tr><td><b><span class="concept" data-cid="6719">FRAX</span></b></td><td>Risk assessment tool developed by WHO which calculates a patients 10-year risk of developing an osteoporosis related fracture</td></tr><tr><td><b><span class="concept" data-cid="6720">Ranson criteria</span></b></td><td>Acute pancreatitis</td></tr><tr><td><b><span class="concept" data-cid="6721">MUST</span></b></td><td>Malnutrition</td></tr></tbody></table></div><br>*FAST is also mnemonic to help patients/relatives identify the symptoms of a stroke</div>
---
;AUDIT FAST and CAGE Alcoholics
;WATER LO PRESSURE
:Waterlow Pressure Ulcers
;SON RAN with PAIN
:RAN SON: PAINcreatitis
;FRAXture 10 yr risk of Osteoporosis
;BISHOP DELIVERING Speech
:BISHOP: Induction of Labour
;Everyone PROSTATES before GLEASON IPS
:Prostate symptoms: IPS - Prostate Cancer: Gleason
;Don't SCOFF when EATING
;9 for Depression
;UAE HAD caused me ANXIETY and DEPRESSION
;RHEUMA DAS
;TRANSIENTLY forgot ABCD2 after TRANSIENT STROKE
;NYHEART
;GAD7 for General Anxiety Disorder
---
<center>
|!Jones' criteria|Rheumatic Fever|
|!Duke's criteria|InfectiveEndocarditis|
|!Framingham Risk Score|10y Cardiovascular risk|
|!Kosher's criteria|SepticArthritis|
|!Lights criteria|PleuralEffusion Transudate Vs. Exudate|
|!Ranson's criteria|AcuPancreatitis|
|!Blatchford score & Rockall Score|Mortality risk from AcuUGIBleed|
|!Rotterdam's criteria|Diagnosis of [[PCOD]]|
|!||
</center>
<center>
<$button class="tile-link"><$action-navigate $to="ICU Infusions"/>ICU INFUSIONS</$button>
<$button class="tile-link"><$action-navigate $to="Infusions"/>INFUSIONS</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 100kg"/>100 KG ADULT</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 70kg"/>70 KG ADULT</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 50kg"/>50 KG ADULT</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 35kg/10yr"/>35 KG / 10 YR OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 25kg/8yr"/>25 KG / 8 YR OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 20kg/6yr"/>20 KG / 6 YR OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 15kg/4yr"/>15 KG / 4 YR OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 12kg/2yr"/>12 KG / 2 YR OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 10kg/1yr"/>10 KG / 1 YR OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 8kg/6m"/>8 KG / 6 M OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 6kg/4m"/>6 KG / 4 M OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 5kg/2m"/>5 KG / 2 M OLD CHILD</$button>
<$button class="tile-link"><$action-navigate $to="Critical Care - 3.5kg"/>3.5 KG OLD CHILD</$button>
</center>
<center>
!!! <center>''CRITICAL CARE REFERENCE FOR 100kg PERSON (LARGE ADULT)''</center>
<hr>
|!Normal Vital Signs|<|
|HR|60-100 bpm|
|RR|10-20 rpm|
|SBP|90-140 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|100 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|30 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|150 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Ketamine|2 mg/kg|50 mg/ml|200 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|10 mg|
|Rocuronium|1 mg/kg|10 mg/ml|100 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|8 ±0.5|
|Blade|Miller/MAC|3-4|
|cm to teeth|3 x ETT size|23|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||200 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|1 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|300 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|100 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|2000 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|50 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|6 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|12 mg|
|Amiodarone load|5 mg/kg||150 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|1 mg|
|Cardioversion (sync)||2 joule/kg|100J, 200J, 300J, 360J|
|Procainamide|15 mg/kg|100 mg/ml|1500 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|25 mg|
|Mag sulfate|50 mg/kg|1g/2ml|2000 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|5 mcg|
|Glucagon|0.025 mg/kg||2.5 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||200 mL|
|D10|2.5 mL/kg||250 mL|
|Glucagon|0.025 mg/kg|1mg|2.5 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|7.5 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|8 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|6 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|3 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|2 mg|
|Morphine|0.1 mg/kg|10 mg/ml|10 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|100 mcg|
|Ketamine|1 mg/kg|50 mg/ml|100 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Propofol|1 mg/kg|10 mg/ml|100 mg|
|Propofol (drip)|50 mcg/kg/min||5000 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|2 mg|
|Phenytoin|20 mg/kg|50 mg/ml|2000 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|1000 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|10 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|2000 mg|
|Mannitol|1 g/kg|20 gm/100ml|100 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|2 L|
|Maintenance (4-2-1 Rule)|140 cc/hr|
|PRBC (1u=250cc)|1 unit|
|Chest tube (fr)|42|
|Central line|7F|
|NG tube (fr)|18|
|Foley Cath (F)||
|IV Cath(G)|16-20|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 10kg/1yr OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|120 bpm|
|RR|25 rpm|
|SBP|>72 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|10 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|3 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|15 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|1 mg|
|Ketamine|2 mg/kg|50 mg/ml|20 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|1 mg|
|Rocuronium|1 mg/kg|10 mg/ml|10 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|4 ±0.5|
|Blade|Miller/MAC|1|
|cm to teeth|3 x ETT size|12|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||20 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.1 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|50 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|10 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|500 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|10 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|1 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|2 mg|
|Amiodarone load|5 mg/kg||50 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.2 mg|
|Cardioversion (sync)||2 joule/kg|10J,20J|
|Procainamide|15 mg/kg|100 mg/ml|150 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|2.5 mg|
|Mag sulfate|50 mg/kg|1g/2ml|500 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|0.5 mcg|
|Glucagon|0.025 mg/kg||0.25 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||20 mL|
|D10|2.5 mL/kg||25 mL|
|Glucagon|0.025 mg/kg|1mg|0.25 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|0.75 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|1 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|0.6 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.3 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.5 mg|
|Morphine|0.1 mg/kg|10 mg/ml|1 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|10 mcg|
|Ketamine|1 mg/kg|50 mg/ml|10 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|1 mg|
|Propofol|1 mg/kg|10 mg/ml|10 mg|
|Propofol (drip)|50 mcg/kg/min||500 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.5 mg|
|Phenytoin|20 mg/kg|50 mg/ml|200 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|100 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|1 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|200 mg|
|Mannitol|1 g/kg|20 gm/100ml|10 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|200 ml|
|Maintenance (4-2-1 Rule)|40 cc/hr|
|PRBC (1u=250cc)|100 ml|
|Chest tube (fr)|16|
|Central line|3F|
|NG tube (fr)|10|
|Foley Cath (F)|8-10|
|IV Cath(G)|22-24|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 12kg/2yr OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|80-130 bpm|
|RR|20-30 rpm|
|SBP|74-110 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|12 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|3.6 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|18 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|1.2 mg|
|Ketamine|2 mg/kg|50 mg/ml|24 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|1.2 mg|
|Rocuronium|1 mg/kg|10 mg/ml|12 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|4 ±0.5|
|Blade|Miller/MAC|2|
|cm to teeth|3 x ETT size|12|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||24 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.12 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|60 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|12 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|600 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|12 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|1.2 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|2.4 mg|
|Amiodarone load|5 mg/kg||60 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.24 mg|
|Cardioversion (sync)||2 joule/kg|12J,24J|
|Procainamide|15 mg/kg|100 mg/ml|180 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|3 mg|
|Mag sulfate|50 mg/kg|1g/2ml|600 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|0.6 mcg|
|Glucagon|0.025 mg/kg||0.3 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||24 mL|
|D10|2.5 mL/kg||30 mL|
|Glucagon|0.025 mg/kg|1mg|0.3 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|0.9 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|1 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|0.7 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.36 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.6 mg|
|Morphine|0.1 mg/kg|10 mg/ml|1.2 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|12 mcg|
|Ketamine|1 mg/kg|50 mg/ml|12 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|1.2 mg|
|Propofol|1 mg/kg|10 mg/ml|12 mg|
|Propofol (drip)|50 mcg/kg/min||600 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.6 mg|
|Phenytoin|20 mg/kg|50 mg/ml|240 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|120 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|1.2 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|240 mg|
|Mannitol|1 g/kg|20 gm/100ml|12 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|240 ml|
|Maintenance (4-2-1 Rule)|45 cc/hr|
|PRBC (1u=250cc)|120 ml|
|Chest tube (fr)|20|
|Central line|3F|
|NG tube (fr)|10|
|Foley Cath (F)|10|
|IV Cath(G)|18-22|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 15kg/4yr OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|80-120 bpm|
|RR|20-30 rpm|
|SBP|76-110 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|15 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|4.5 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|23 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|1.5 mg|
|Ketamine|2 mg/kg|50 mg/ml|30 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|1.5 mg|
|Rocuronium|1 mg/kg|10 mg/ml|15 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|4 ±0.5|
|Blade|Miller/MAC|2-3|
|cm to teeth|3 x ETT size|12|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||30 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.15 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|75 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|15 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|750 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|15 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|1.5 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|3 mg|
|Amiodarone load|5 mg/kg||75 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.3 mg|
|Cardioversion (sync)||2 joule/kg|15J,30J|
|Procainamide|15 mg/kg|100 mg/ml|225 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|3.75 mg|
|Mag sulfate|50 mg/kg|1g/2ml|750 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|0.75 mcg|
|Glucagon|0.025 mg/kg||0.38 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||30 mL|
|D10|2.5 mL/kg||37.5 mL|
|Glucagon|0.025 mg/kg|1mg|0.38 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|1.15 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|1 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|0.9 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.45 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.8 mg|
|Morphine|0.1 mg/kg|10 mg/ml|1.5 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|15 mcg|
|Ketamine|1 mg/kg|50 mg/ml|15 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|1.5 mg|
|Propofol|1 mg/kg|10 mg/ml|15 mg|
|Propofol (drip)|50 mcg/kg/min||750 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.8 mg|
|Phenytoin|20 mg/kg|50 mg/ml|300 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|150 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|1.5 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|300 mg|
|Mannitol|1 g/kg|20 gm/100ml|15 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|300 ml|
|Maintenance (4-2-1 Rule)|50 cc/hr|
|PRBC (1u=250cc)|150 ml|
|Chest tube (fr)|24|
|Central line|4F|
|NG tube (fr)|10|
|Foley Cath (F)|10-12|
|IV Cath(G)|18-22|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 20kg/6yr OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|70-110 bpm|
|RR|18-24 rpm|
|SBP|80-110 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|20 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|6 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|30 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Ketamine|2 mg/kg|50 mg/ml|40 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|2 mg|
|Rocuronium|1 mg/kg|10 mg/ml|20 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|5 ±0.5|
|Blade|Miller/MAC|3-4|
|cm to teeth|3 x ETT size|15|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||40 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.2 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|100 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|20 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|1000 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|20 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|2 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|4 mg|
|Amiodarone load|5 mg/kg||100 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.4 mg|
|Cardioversion (sync)||2 joule/kg|20J,40J|
|Procainamide|15 mg/kg|100 mg/ml|300 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|5 mg|
|Mag sulfate|50 mg/kg|1g/2ml|1000 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|1 mcg|
|Glucagon|0.025 mg/kg||0.5 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||40 mL|
|D10|2.5 mL/kg||50 mL|
|Glucagon|0.025 mg/kg|1mg|0.5 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|1.9 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|2 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|1.2 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.6 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|1 mg|
|Morphine|0.1 mg/kg|10 mg/ml|2 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|20 mcg|
|Ketamine|1 mg/kg|50 mg/ml|20 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Propofol|1 mg/kg|10 mg/ml|20 mg|
|Propofol (drip)|50 mcg/kg/min||1000 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|1 mg|
|Phenytoin|20 mg/kg|50 mg/ml|400 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|200 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|2 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|400 mg|
|Mannitol|1 g/kg|20 gm/100ml|20 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|400 ml|
|Maintenance (4-2-1 Rule)|60 cc/hr|
|PRBC (1u=250cc)|200 ml|
|Chest tube (fr)|28|
|Central line|4F|
|NG tube (fr)|12|
|Foley Cath (F)|10-12|
|IV Cath(G)|18-20|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 25kg/8yr OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|70-110 bpm|
|RR|18-22 rpm|
|SBP|80-110 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|25 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|7.5 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|38 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Ketamine|2 mg/kg|50 mg/ml|50 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|2.5 mg|
|Rocuronium|1 mg/kg|10 mg/ml|25 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|5 ±0.5|
|Blade|Miller/MAC|3-4|
|cm to teeth|3 x ETT size|15|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||50 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.25 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|125 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|25 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|1250 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|25 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|2.5 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|5 mg|
|Amiodarone load|5 mg/kg||125 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.5 mg|
|Cardioversion (sync)||2 joule/kg|25J,50J|
|Procainamide|15 mg/kg|100 mg/ml|375 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|6.25 mg|
|Mag sulfate|50 mg/kg|1g/2ml|1250 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|1.25 mcg|
|Glucagon|0.025 mg/kg||0.63 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||50 mL|
|D10|2.5 mL/kg||62.5 mL|
|Glucagon|0.025 mg/kg|1mg|0.63 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|1.9 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|2 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|1.5 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.75 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|1.3 mg|
|Morphine|0.1 mg/kg|10 mg/ml|2.5 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|25 mcg|
|Ketamine|1 mg/kg|50 mg/ml|25 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Propofol|1 mg/kg|10 mg/ml|25 mg|
|Propofol (drip)|50 mcg/kg/min||1250 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|1.3 mg|
|Phenytoin|20 mg/kg|50 mg/ml|500 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|250 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|2.5 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|500 mg|
|Mannitol|1 g/kg|20 gm/100ml|25 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|500 ml|
|Maintenance (4-2-1 Rule)|65 cc/hr|
|PRBC (1u=250cc)|1 unit|
|Chest tube (fr)|28|
|Central line|4-5F|
|NG tube (fr)|12|
|Foley Cath (F)|12|
|IV Cath(G)|18-20|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 3.5kg CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|120-160 bpm|
|RR|40-60 rpm|
|SBP|>60 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|3.5 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|1.1 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|8 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.4 mg|
|Ketamine|2 mg/kg|50 mg/ml|7 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|0.4 mg|
|Rocuronium|1 mg/kg|10 mg/ml|3.5 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|3 ±0.5|
|Blade|Miller/MAC|1|
|cm to teeth|3 x ETT size|9|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||7 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.035 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|18 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|3.5 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|175 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|3.5 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|0.35 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|0.7 mg|
|Amiodarone load|5 mg/kg||18 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.07 mg|
|Cardioversion (sync)||2 joule/kg|3.5J,7J|
|Procainamide|15 mg/kg|100 mg/ml|52.5 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|0.88 mg|
|Mag sulfate|50 mg/kg|1g/2ml|175 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|0.175 mcg|
|Glucagon|0.025 mg/kg||0.09 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg|||
|D10|2.5 mL/kg||8.75 mL|
|Glucagon|0.025 mg/kg|1mg|0.09 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|0.25 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml||
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|0.25 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.1 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.2 mg|
|Morphine|0.1 mg/kg|10 mg/ml|0.35 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|3.5 mcg|
|Ketamine|1 mg/kg|50 mg/ml|3.5 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.4 mg|
|Propofol|1 mg/kg|10 mg/ml|3.5 mg|
|Propofol (drip)|50 mcg/kg/min||175 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.2 mg|
|Phenytoin|20 mg/kg|50 mg/ml|70 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|35 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|0.4 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|70 mg|
|Mannitol|1 g/kg|20 gm/100ml|3.5 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|70 ml|
|Maintenance (4-2-1 Rule)|14 cc/hr|
|PRBC (1u=250cc)|35 ml|
|Chest tube (fr)|10|
|Central line|3F|
|NG tube (fr)|5|
|Foley Cath (F)|5-8|
|IV Cath(G)|22-24|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 35kg/10yr OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|70-110 bpm|
|RR|16-20 rpm|
|SBP|90-120 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|35 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|10.5 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|53 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Ketamine|2 mg/kg|50 mg/ml|70 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|3.5 mg|
|Rocuronium|1 mg/kg|10 mg/ml|35 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|6 ±0.5|
|Blade|Miller/MAC|3-4|
|cm to teeth|3 x ETT size|18|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||70 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.35 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|175 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|35 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|1750 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|35 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|3.5 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|7 mg|
|Amiodarone load|5 mg/kg||150 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.7 mg|
|Cardioversion (sync)||2 joule/kg|35J,70J|
|Procainamide|15 mg/kg|100 mg/ml|525 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|8.75 mg|
|Mag sulfate|50 mg/kg|1g/2ml|1750 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|1.75 mcg|
|Glucagon|0.025 mg/kg||0.88 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||70 mL|
|D10|2.5 mL/kg||87.5 mL|
|Glucagon|0.025 mg/kg|1mg|0.88 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|2.65 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|3 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|2.1 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|1.1 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|1.8 mg|
|Morphine|0.1 mg/kg|10 mg/ml|3.5 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|35 mcg|
|Ketamine|1 mg/kg|50 mg/ml|35 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Propofol|1 mg/kg|10 mg/ml|35 mg|
|Propofol (drip)|50 mcg/kg/min||1750 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|1.8 mg|
|Phenytoin|20 mg/kg|50 mg/ml|700 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|350 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|3.5 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|700 mg|
|Mannitol|1 g/kg|20 gm/100ml|35 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|700 ml|
|Maintenance (4-2-1 Rule)|75 cc/hr|
|PRBC (1u=250cc)|1 unit|
|Chest tube (fr)|32|
|Central line|6F|
|NG tube (fr)|16|
|Foley Cath (F)|12|
|IV Cath(G)|16-20|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 50kg PERSON (SMALL ADULT)''
<hr>
|!Normal Vital Signs|<|
|HR|60-100 bpm|
|RR|10-20 rpm|
|SBP|90-140 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|50 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|15 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|75 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Ketamine|2 mg/kg|50 mg/ml|100 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|5 mg|
|Rocuronium|1 mg/kg|10 mg/ml|50 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|8 ±0.5|
|Blade|Miller/MAC|3-4|
|cm to teeth|3 x ETT size|23|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||200 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.5 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|250 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|50 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|2000 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|50 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|5 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|10 mg|
|Amiodarone load|5 mg/kg||150 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|1 mg|
|Cardioversion (sync)||2 joule/kg|100J,200J,<br>300J,360J|
|Procainamide|15 mg/kg|100 mg/ml|750 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|12.5 mg|
|Mag sulfate|50 mg/kg|1g/2ml|2000 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|2.5 mcg|
|Glucagon|0.025 mg/kg||1.25 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||100 mL|
|D10|2.5 mL/kg||125 mL|
|Glucagon|0.025 mg/kg|1mg|1.25 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|3.75 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|4 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|3 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|1.5 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|2 mg|
|Morphine|0.1 mg/kg|10 mg/ml|5 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|50 mcg|
|Ketamine|1 mg/kg|50 mg/ml|50 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Propofol|1 mg/kg|10 mg/ml|50 mg|
|Propofol (drip)|50 mcg/kg/min||2500 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|2 mg|
|Phenytoin|20 mg/kg|50 mg/ml|1000 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|500 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|5 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|1000 mg|
|Mannitol|1 g/kg|20 gm/100ml|50 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|1 L|
|Maintenance (4-2-1 Rule)|90 cc/hr|
|PRBC (1u=250cc)|1 unit|
|Chest tube (fr)|36|
|Central line|7F|
|NG tube (fr)|18|
|Foley Cath (F)||
|IV Cath(G)|16-20|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 5kg/2m OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|100-120 bpm|
|RR|30-50 rpm|
|SBP|65-100 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|5 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|1.5 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|8 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.5 mg|
|Ketamine|2 mg/kg|50 mg/ml|10 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|0.5 mg|
|Rocuronium|1 mg/kg|10 mg/ml|5 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|4 ±0.5|
|Blade|Miller/MAC|1|
|cm to teeth|3 x ETT size|12|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||10 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.05 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|25 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|5 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|250 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|5 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|0.5 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|1 mg|
|Amiodarone load|5 mg/kg||25 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.1 mg|
|Cardioversion (sync)||2 joule/kg|5J,10J|
|Procainamide|15 mg/kg|100 mg/ml|75 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|1.25 mg|
|Mag sulfate|50 mg/kg|1g/2ml|250 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|0.25 mcg|
|Glucagon|0.025 mg/kg||0.13 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||10 mL|
|D10|2.5 mL/kg||12.5 mL|
|Glucagon|0.025 mg/kg|1mg|0.13 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|0.4 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml||
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|0.3 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.15 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.3 mg|
|Morphine|0.1 mg/kg|10 mg/ml|0.5 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|5 mcg|
|Ketamine|1 mg/kg|50 mg/ml|5 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.5 mg|
|Propofol|1 mg/kg|10 mg/ml|5 mg|
|Propofol (drip)|50 mcg/kg/min||250 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.3 mg|
|Phenytoin|20 mg/kg|50 mg/ml|100 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|50 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|0.5 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|100 mg|
|Mannitol|1 g/kg|20 gm/100ml|5 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|100 ml|
|Maintenance (4-2-1 Rule)|20 cc/hr|
|PRBC (1u=250cc)|50 ml|
|Chest tube (fr)|10|
|Central line|3F|
|NG tube (fr)|8|
|Foley Cath (F)|5-8|
|IV Cath(G)|22-24|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 6kg/4m OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|100-180 bpm|
|RR|30-45 rpm|
|SBP|65-100 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|6 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|1.8 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|9 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.6 mg|
|Ketamine|2 mg/kg|50 mg/ml|12 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|0.6 mg|
|Rocuronium|1 mg/kg|10 mg/ml|6 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|4 ±0.5|
|Blade|Miller/MAC|1|
|cm to teeth|3 x ETT size|12|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||12 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.06 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|30 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|6 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|300 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|6 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|0.6 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|1.2 mg|
|Amiodarone load|5 mg/kg||30 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.12 mg|
|Cardioversion (sync)||2 joule/kg|6J,12J|
|Procainamide|15 mg/kg|100 mg/ml|90 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|1.5 mg|
|Mag sulfate|50 mg/kg|1g/2ml|300 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|0.3 mcg|
|Glucagon|0.025 mg/kg||0.15 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||12 mL|
|D10|2.5 mL/kg||15 mL|
|Glucagon|0.025 mg/kg|1mg|0.15 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|0.45 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml||
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|0.35 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.18 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.3 mg|
|Morphine|0.1 mg/kg|10 mg/ml|0.6 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|6 mcg|
|Ketamine|1 mg/kg|50 mg/ml|6 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.6 mg|
|Propofol|1 mg/kg|10 mg/ml|6 mg|
|Propofol (drip)|50 mcg/kg/min||300 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.3 mg|
|Phenytoin|20 mg/kg|50 mg/ml|120 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|60 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|0.6 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|120 mg|
|Mannitol|1 g/kg|20 gm/100ml|6 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|120 ml|
|Maintenance (4-2-1 Rule)|20 cc/hr|
|PRBC (1u=250cc)|60 ml|
|Chest tube (fr)|10|
|Central line|3F|
|NG tube (fr)|8|
|Foley Cath (F)|5-8|
|IV Cath(G)|22-24|
<hr>
</center>
<center>
!!! <center>''CRITICAL CARE REFERENCE FOR 70kg PERSON (ADULT)''</center>
<hr>
|!Normal Vital Signs|<|
|HR|60-100 bpm|
|RR|10-20 rpm|
|SBP|90-140 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|70 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|21 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|105 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Ketamine|2 mg/kg|50 mg/ml|140 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|7 mg|
|Rocuronium|1 mg/kg|10 mg/ml|70 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|8 ±0.5|
|Blade|Miller/MAC|3-4|
|cm to teeth|3 x ETT size|23|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||200 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.7 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|300 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|70 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|2000 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|50 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|6 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|12 mg|
|Amiodarone load|5 mg/kg||150 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|1 mg|
|Cardioversion (sync)||2 joule/kg|100J,200J,<br>300J,360J|
|Procainamide|15 mg/kg|100 mg/ml|1050 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|17.5 mg|
|Mag sulfate|50 mg/kg|1g/2ml|2000 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|3.5 mcg|
|Glucagon|0.025 mg/kg||1.75 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||140 mL|
|D10|2.5 mL/kg||175 mL|
|Glucagon|0.025 mg/kg|1mg|1.75 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|5.25 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|5 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|4 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|2.1 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|2 mg|
|Morphine|0.1 mg/kg|10 mg/ml|7 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|70 mcg|
|Ketamine|1 mg/kg|50 mg/ml|70 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|2 mg|
|Propofol|1 mg/kg|10 mg/ml|70 mg|
|Propofol (drip)|50 mcg/kg/min||3500 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|2 mg|
|Phenytoin|20 mg/kg|50 mg/ml|1400 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|700 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|7 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|1400 mg|
|Mannitol|1 g/kg|20 gm/100ml|70 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|1.5 L|
|Maintenance (4-2-1 Rule)|110 cc/hr|
|PRBC (1u=250cc)|1 unit|
|Chest tube (fr)|40|
|Central line|7F|
|NG tube (fr)|18|
|Foley Cath (F)||
|IV Cath(G)|16-20|
<hr>
</center>
<center>
!!! ''CRITICAL CARE REFERENCE FOR 8kg/6m OLD CHILD''
<hr>
|!Normal Vital Signs|<|
|HR|130 bpm|
|RR|25 rpm|
|SBP|>70 mmHg|
<hr>
!!! ''INTUBATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|!Premedication|<|<|<|
|Fentanyl|1 mcg/kg|50 mcg/ml|8 mcg|
|!Rapid Sequence Intubation|<|<|<|
|Etomidate|0.3 mg/kg|2 mg/ml|2.4 mg|
|Succinylcholine|1.5 mg/kg|50 mg/ml|12 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.8 mg|
|Ketamine|2 mg/kg|50 mg/ml|16 mg|
|Vecuronium|0.1 mg/kg|4 mg/4 ml|0.8 mg|
|Rocuronium|1 mg/kg|10 mg/ml|8 mg|
|!Equipment|<|<|
|ET Tube|age/4+3|4 ±0.5|
|Blade|Miller/MAC|1|
|cm to teeth|3 x ETT size|12|
<hr>
!!! ''PULSELESS ARREST''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Defibrilation|2 J/kg||16 J|
|Epinephrine|0.01 mg/kg|1 mg/ml|0.08 mg|
|Amiodarone load|5 mg/kg|150 mg/3ml|40 mg|
|Lidocaine|1 mg/kg|21.3 mg/ml|8 mg|
|Mag sulfate|50 mg/kg|1 g/2ml|400 mg|
|Sod Bicarbonate|1 mL/kg|25 meq/25ml|10 mL|
<hr>
!!! ''CARDIAC WITH PULSE''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Adenosine|0.1 mg/kg|6 mg|0.8 mg|
|Adenosine rpt|0.2 mg/kg|6 mg|1.6 mg|
|Amiodarone load|5 mg/kg||40 mg|
|Atropine|0.02 mg/kg|0.6 mg/ml|0.16 mg|
|Cardioversion (sync)||2 joule/kg|8J,16J|
|Procainamide|15 mg/kg|100 mg/ml|120 mg|
|Diltiazem|0.25 mg/kg|50 mg/ml|2 mg|
|Mag sulfate|50 mg/kg|1g/2ml|400 mg|
|Nitroglycerin drip|0.05 mcg/kg/min|5mg/ml|0.4 mcg|
|Glucagon|0.025 mg/kg||0.2 mg|
<hr>
!!! ''HYPOGLYCEMIA''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|D25|2 mL/kg||16 mL|
|D10|2.5 mL/kg||20 mL|
|Glucagon|0.025 mg/kg|1mg|0.2 mg|
<hr>
!!! ''VASOPRESSORS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Noradrenaline|0.1-2 mcg/kg/min|1 mg/ml|0.6 ml/hr|
|Dopamine|2-20 mcg/kg/min|40 mg/ml|1 ml/hr|
|Dobutamine|2-20 mcg/kg/min|50 mg/ml|0.5 ml/hr|
|Epinephrine|0.1-1 mcg/kg/min|1 mg/ml|0.24 ml/hr|
<hr>
!!! ''SEDATION''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.4 mg|
|Morphine|0.1 mg/kg|10 mg/ml|0.8 mg|
|Fentanyl|1 mcg/kg|50mcg/ml|8 mcg|
|Ketamine|1 mg/kg|50 mg/ml|8 mg|
|Midazolam|0.1 mg/kg|1 mg/ml|0.8 mg|
|Propofol|1 mg/kg|10 mg/ml|8 mg|
|Propofol (drip)|50 mcg/kg/min||400 mcg|
<hr>
!!! ''SEIZURE AND CNS''
|!Medication|!Dose/Kg|!Formulation|!Dose|
|Lorazepam|0.05 mg/kg|2 mg/ml|0.4 mg|
|Phenytoin|20 mg/kg|50 mg/ml|160 mg|
|Phenobarbitol|10 mg/kg|200 mg/ml|80 mg|
|Diazepam rectal|0.1mg/kg q2min|5 mg/10mg|0.8 mg|
|Levetiracetam|20 mg/kg|500 mg/vial|160 mg|
|Mannitol|1 g/kg|20 gm/100ml|8 g|
<hr>
!!! ''TRAUMA''
|!Medication|!Dose/Number|
|NS 0.9% bolus (20 ml/kg)|160 ml|
|Maintenance (4-2-1 Rule)|32 cc/hr|
|PRBC (1u=250cc)|80 ml|
|Chest tube (fr)|12|
|Central line|3F|
|NG tube (fr)|8|
|Foley Cath (F)|5-8|
|IV Cath(G)|22-24|
<hr>
</center>
<$list filter="[tag[CriticalCare]sort[idx]]"/>
<div id="notecontent">Crohn's disease is a form of inflammatory bowel disease. It commonly affects the terminal ileum and colon but may be seen anywhere from the mouth to anus.<br><br>Pathology<br><ul><li>cause is unknown but there is a strong genetic susceptibility</li><li>inflammation occurs in all layers, down to the serosa. This is why patients with Crohn's are prone to strictures, fistulas and adhesions</li></ul><br>Crohn's disease typically presents in late adolescence or early adulthood. Features include:<br><ul><li>presentation may be non-specific symptoms such as <span id="concept_popover_id_6204" class="concept concept-1 trigger-link" data-cid="6204" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6204'>You've been tested on this concept once, 3 weeks ago, and got the associated question incorrect.</div><br><div id='div_concept_rating6204' class='text-right' style ='font-size:90%;'>You've rated this <span style='color:green'>important</span> <br><span style = 'border-bottom: 5px solid rgb(178,255,0)'>Importance: <b>65</b></span> </div>" data-original-title="Crohn's disease - weight loss">weight loss</span> and lethargy</li><li>diarrhoea: the most prominent symptom in adults. Crohn's colitis may cause bloody diarrhoea</li><li>abdominal pain: the most prominent symptom in children</li><li>perianal disease: e.g. Skin tags or ulcers</li><li>extra-intestinal features are more common in patients with colitis or perianal disease</li></ul> <br>Investigations<br><ul><li>raised inflammatory markers</li><li>increased faecal calprotectin</li><li>anaemia(folate deficiency is more common than vitamin B12 deficiency)</li><li>low vitamin B12 and vitamin D</li></ul><br>Questions regarding the 'extra-intestinal' features of inflammatory bowel disease are common:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Common to both Crohn's disease (CD) and Ulcerative colitis (UC)</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><b>Related to disease activity</b></td><td>Arthritis: pauciarticular, asymmetric<br> Erythema nodosum<br> EpiScleritis<br> Osteoporosis</td><td>Arthritis is the most common extra-intestinal feature in both CD and UC<br> EpiScleritis is more common in CD</td></tr><tr><td><b>Unrelated to disease activity</b></td><td>Arthritis: polyarticular, symmetric<br> Uveitis<br> Pyoderma gangrenosum<br> Clubbing<br> Primary sclerosing cholangitis</td><td>Primary sclerosing cholangitis is much more common in UC<br> Uveitis is more common in UC</td></tr></tbody></table></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd910b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd910.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd910b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Venn diagram showing shared features and differences between ulcerative colitis and Crohn's disease. Note that whilst some features are present in both, some are much more common in one of the conditions, for example colorectal cancer in ulcerative colitis</div></div>
<div id="notecontent">Croup is a form of upper respiratory tract infection seen in infants and toddlers. It is characterised by stridor which is caused by a combination of laryngeal oedema and secretions. <span class="concept" data-cid="1277">Parainfluenza viruses</span> account for the majority of cases.<br><br>Epidemiology<br><ul><li>peak incidence at <span id="concept_popover_id_1568" class="concept concept-0 trigger-link" data-cid="1568" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1568'>You've never been tested on this concept</div><br><div id='div_concept_rating1568' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(203,255,0)'>Importance: <b>60</b></span> </div>" data-original-title="Whereas the peak incidence of croup is 6 months -3 years, bronchiolitis is seen in 1-9 month olds">6 months - 3 years</span></li><li>more common in <span class="concept" data-cid="2940">autumn</span></li></ul><br>Features<br><ul><li>stridor</li><li>barking cough (worse at night)</li><li>fever</li><li>coryzal symptoms</li></ul><br>Clinical Knowledge Summaries (CKS) suggest using the following criteria to grade the severity*:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Mild</b></th><th><b>Moderate</b></th><th><b>Severe</b></th></tr></thead><tbody><tr><td> Occasional barking cough<br> No audible stridor at rest<br> No or mild suprasternal and/or intercostal recession<br> The child is happy and is prepared to eat, drink, and play</td><td>Frequent barking cough <br> Easily audible stridor at rest<br> Suprasternal and sternal wall retraction at rest<br> No or little distress or agitation<br> The child can be placated and is interested in its surroundings</td><td>Frequent barking cough<br> Prominent inspiratory (and occasionally, expiratory) stridor at rest<br> Marked sternal wall retractions<br> Significant distress and agitation, or lethargy or restlessness (a sign of hypoxaemia)<br> Tachycardia occurs with more severe obstructive symptoms and hypoxaemia</td></tr></tbody></table></div><br>CKS suggest admitting any child with moderate or severe croup. Other features which should prompt admission include:<br><ul><li>< 6 months of age</li><li>known upper airway abnormalities (e.g. Laryngomalacia, Down's syndrome)</li><li>uncertainty about diagnosis (important differentials include acute epiglottitis, bacterial tracheitis, peritonsillar abscess and foreign body inhalation)</li></ul><br>Investigations<br><ul><li>the vast majority of children are diagnosed clinically</li><li>however, if a chest x-ray is done:<ul><li>a posterior-anterior view will show subglottic narrowing, commonly called the '<span class="concept" data-cid="10735">steeple sign</span>'</li><li>in contrast, a lateral view in acute epiglottis will show swelling of the epiglottis - the 'thumb sign'</li></ul></li></ul><br>Management<br><ul><li>CKS recommend giving a <span id="concept_popover_id_1459" class="concept concept-1 trigger-link" data-cid="1459" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1459'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating1459' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(45,255,0)'>Importance: <b>91</b></span> </div>" data-original-title="Croup - A single dose of oral dexamethasone (0.15 mg/kg) is to be taken immediately regardless of severity">single dose of oral dexamethasone (0.15mg/kg) to all children regardless of severity</span></li><li><span class="concept" data-cid="1156">prednisolone</span> is an alternative if dexamethasone is not available</li></ul><br>Emergency treatment<br><ul><li>high-flow oxygen</li><li>nebulised adrenaline</li></ul><br>*these in turn are based partly on the Alberta Medical Association (2008) Guideline for the diagnosis and management of croup.</div>
---
>CRURAMAINA RACING DOGS BARKING IN THE NIGHT
---
>DEX for DOGS
---
>PARAmilitary COUP
*PARAinfluenza CROUP
---
Central retinal vein occlusion (CRVO) is a differential for sudden painless loss of vision.
Risk factors
* increasing age
* glaucoma
* polycythaemia
Features
* sudden, painless reduction or loss of visual acuity, usually unilaterally
* severe retinal haemorrhages are usually seen on fundoscopy
<div id="body_content">
Immunoglobulins which undergo reversible precipitation at 4 deg C, dissolve when warmed to 37 deg C. One-third of cases are idiopathic<br><br>Three types<br><ul><li>type I (25%): monoclonal</li><li>type II (25%): mixed monoclonal and polyclonal: usually with rheumatoid factor (RF)</li><li>type III (50%): polyclonal: usually with RF</li></ul><br>Type I<br><ul><li>monoclonal - IgG or IgM</li><li>associations: multiple myeloma, Waldenstrom macroglobulinaemia</li></ul><br>Type II<br><ul><li>mixed monoclonal and polyclonal: usually with RF </li><li>associations: <span class="concept" data-cid="9127">hepatitis C</span>, RA, Sjogren's, lymphoma</li></ul><br>Type III<br><ul><li>polyclonal: usually with RF</li><li>associations: rheumatoid arthritis, Sjogren's</li></ul><br><br>Symptoms (if present in high concentrations)<br><ul><li><span class="concept" data-cid="1517">Raynaud's only seen in type I</span></li><li>cutaneous: vascular purpura, distal ulceration, ulceration</li><li>arthralgia</li><li>renal involvement (diffuse glomerulonephritis)</li></ul><br>Tests<br><ul><li>low complement (esp. C4)</li><li>high ESR</li></ul><br>Treatment<br><ul><li>immunosuppression</li><li>plasmapheresis</li></ul></div>
<div id="body_content">
The table below summarises the characteristic cerebrospinal fluid (CSF) findings in meningitis:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Bacterial</b></th><th><b>Viral</b></th><th><b>Tuberculous</b></th><th><b>Fungal</b></th></tr></thead><tbody><tr><td><b>Appearance</b></td><td>Cloudy</td><td>Clear/cloudy</td><td>Slight cloudy, fibrin web</td><td>Cloudy</td></tr><tr><td><b>Glucose</b></td><td><span class="concept" data-cid="10900">Low (< 1/2 plasma)</span></td><td>60-80% of plasma glucose*</td><td>Low (< 1/2 plasma)</td><td>Low</td></tr><tr><td><b>Protein</b></td><td>High (> 1 g/l)</td><td>Normal/raised</td><td>High (> 1 g/l)</td><td>High</td></tr><tr><td><b>White cells</b></td><td>10 - 5,000 polymorphs/mm³</td><td>15 - 1,000 lymphocytes/mm³</td><td>30 - 300 lymphocytes/mm³</td><td>20 - 200 lymphocytes/mm³</td></tr></tbody></table></div><br>The Ziehl-Neelsen stain is only 20% sensitive in the detection of tuberculous meningitis and therefore PCR is sometimes used (sensitivity = 75%)<br><br>*<span class="concept" data-cid="274">mumps is unusual in being associated with a low glucose level in a proportion of cases</span>. A low glucose may also be seen in herpes encephalitis</div>
---
>Check Glucose, if Normal then Lymphocytes to rule out
>NORMAL is 1-5-10-20-50
* Protein <1% of Plasma(<0.45 g/L)
* WBC 0-5/mm^^3^^ (No Neutrophils, mostly Lymphocytes)
* RBC <10/mm^^3^^
* Opening Pressure 10-20 mmH,,2,,O
*Glucose >60% of Plasma
It should be noted that exogenous causes of Cushing's syndrome (e.g. glucocorticoid therapy) are far more common than endogenous ones.
ACTH dependent causes
* Cushing's disease (80%): pituitary tumour secreting ACTH producing adrenal hyperplasia
* ectopic ACTH production (5-10%): e.g. small cell lung cancer
ACTH independent causes
* iatrogenic: steroids
* adrenal adenoma (5-10%)
* adrenal carcinoma (rare)
* Carney complex: syndrome including cardiac myxoma
* micronodular adrenal dysplasia (very rare)
Pseudo-Cushing's
* mimics Cushing's
* often due to alcohol excess or severe depression
* causes false positive dexamethasone suppression test or 24 hr urinary free cortisol
* insulin stress test may be used to differentiate
Cystic fibrosis (CF) is an autosomal recessive disorder causing increased viscosity of secretions (e.g. lungs and pancreas). It is due to a defect in the cystic fibrosis transmembrane conductance regulator gene (CFTR), which codes a cAMP-regulated chloride channel
In the UK 80% of CF cases are due to delta F508 on the long arm of chromosome 7. Cystic fibrosis affects 1 per 2500 births, and the carrier rate is c. 1 in 25
Presenting features
* neonatal period (around 20%): meconium ileus, less commonly prolonged jaundice
* recurrent chest infections (40%)
* malabsorption (30%): steatorrhoea, failure to thrive
* other features (10%): liver disease
Whilst many patients are picked up during newborn screening programmes or early childhood, it is worth remembering that around 5% of patients are diagnosed after the age of 18 years.
Other features of cystic fibrosis
* short stature
* diabetes mellitus
* delayed puberty
* rectal prolapse (due to bulky stools)
* nasal polyps
* male infertility, female subfertility
Organisms which may colonise CF patients
* Staphylococcus aureus
* Pseudomonas aeruginosa
* Burkholderia cepacia*
* Aspergillus
*previously known as Pseudomonas cepacia
<div id="body_content">
<b>Alkylating agents</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Cytotoxic</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th></tr></thead><tbody><tr><td>Cyclophosphamide</td><td><span class="concept" data-cid="6235">Alkylating agent - causes cross-linking in DNA</span></td><td><span class="concept" data-cid="6225">Haemorrhagic cystitis</span>, <span class="concept" data-cid="6226">myelosuppression</span>, <span class="concept" data-cid="2707">transitional cell carcinoma</span></td></tr></tbody></table></div><br><b>Cytotoxic antibiotics</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Cytotoxic</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th></tr></thead><tbody><tr><td>Bleomycin</td><td><span class="concept" data-cid="6232">Degrades preformed DNA</span></td><td><span class="concept" data-cid="6220">Lung fibrosis</span></td></tr><tr><td>Anthracyclines (e.g doxorubicin)</td><td><span class="concept" data-cid="6233">Stabilizes DNA-topoisomerase II complex inhibits DNA & RNA synthesis</span></td><td><span class="concept" data-cid="6221">Cardiomyopathy</span></td></tr></tbody></table></div><br><b>Antimetabolites</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th><b>Cytotoxic</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th></tr></thead><tbody><tr><td>Methotrexate</td><td><span class="concept" data-cid="6234">Inhibits dihydrofolate reductase and thymidylate synthesis</span></td><td><span class="concept" data-cid="6222">Myelosuppression</span>, <span class="concept" data-cid="6223">mucositis</span>, <span class="concept" data-cid="6224">liver fibrosis</span>, <span class="concept" data-cid="4323">lung fibrosis</span></td></tr><tr><td>Fluorouracil (5-FU)</td><td><span class="concept" data-cid="6237">Pyrimidine analogue inducing cell cycle arrest and apoptosis by blocking thymidylate synthase (works during S phase)</span></td><td><span class="concept" data-cid="6227">Myelosuppression</span>, <span class="concept" data-cid="6228">mucositis</span>, <span class="concept" data-cid="6229">dermatitis</span></td></tr><tr><td>6-mercaptopurine</td><td><span class="concept" data-cid="6242">Purine analogue that is activated by HGPRTase, decreasing purine synthesis</span></td><td>Myelosuppression</td></tr><tr><td>Cytarabine</td><td><span class="concept" data-cid="6245">Pyrimidine antagonist. Interferes with DNA synthesis specifically at the S-phase of the cell cycle and inhibits DNA polymerase</span></td><td><span class="concept" data-cid="6246">Myelosuppression</span>, <span class="concept" data-cid="6247">ataxia</span></td></tr></tbody></table></div><br><b>Acts on microtubules</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid4"><thead><tr><th><b>Cytotoxic</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th></tr></thead><tbody><tr><td>Vincristine, vinblastine</td><td><span class="concept" data-cid="6230">Inhibits formation of microtubules</span></td><td>Vincristine: <span class="concept" data-cid="785">Peripheral neuropathy (reversible)</span> , <span class="concept" data-cid="6239">paralytic ileus</span><br>Vinblastine: <span class="concept" data-cid="6240">myelosuppression</span></td></tr><tr><td>Docetaxel</td><td><span class="concept" data-cid="787">Prevents microtubule depolymerisation & disassembly, decreasing free tubulin</span></td><td>Neutropaenia</td></tr></tbody></table></div><br><b>Topoisomerase Inhibitors</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid5"><thead><tr><th><b>Cytotoxic</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th></tr></thead><tbody><tr><td>Irinotecan</td><td><span class="concept" data-cid="9280">Inhibits topoisomerase I which prevents relaxation of supercoiled DNA</span></td><td>Myelosuppression</td></tr></tbody></table></div><br><b>Other cytotoxic drugs</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid6"><thead><tr><th><b>Cytotoxic</b></th><th><b>Mechanism of action</b></th><th><b>Adverse effects</b></th></tr></thead><tbody><tr><td>Cisplatin</td><td><span class="concept" data-cid="6231">Causes cross-linking in DNA</span></td><td><span class="concept" data-cid="6219">Ototoxicity</span>, <span class="concept" data-cid="788">peripheral neuropathy</span>, <span class="concept" data-cid="786">hypomagnesaemia</span></td></tr><tr><td>Hydroxyurea (hydroxycarbamide)</td><td><span class="concept" data-cid="6243">Inhibits ribonucleotide reductase, decreasing DNA synthesis</span></td><td><span class="concept" data-cid="6244">Myelosuppression</span></td></tr></tbody></table></div></div>
---
>vinBLASTS the Marrow
Induction usually requires prolonged exposure to the inducing drug, as opposed to P450 inhibitors, where effects are often seen rapidly
Inducers of the P450 system include
* antiepileptics: phenytoin, carbamazepine
* barbiturates: phenobarbitone
* rifampicin
* St John's Wort
* chronic alcohol intake
* griseofulvin
* smoking (affects CYP1A2, reason why smokers require more aminophylline)
Inhibitors of the P450 system include
* antibiotics: ciprofloxacin, erythromycin
* isoniazid
* cimetidine,omeprazole
* amiodarone
* allopurinol
* imidazoles: ketoconazole, fluconazole
* SSRIs: fluoxetine, sertraline
* ritonavir
* sodium valproate
* acute alcohol intake
* quinupristin
Dactylitis describes the inflammation of a digit (finger or toe).
Causes include:
spondyloarthritis: e.g. Psoriatic and reactive arthritis
sickle-cell disease
other rare causes include tuberculosis, sarcoidosis and syphilis
Dilated cardiomyopathy (DCM) is the most common form of cardiomyopathy, accounting for 90% of cases.
Causes:
* idiopathic: the most common cause
* myocarditis: e.g. Coxsackie B, HIV, diphtheria, Chagas disease
* ischaemic heart disease
* peripartum
* hypertension
* iatrogenic: e.g. doxorubicin
* substance abuse: e.g. alcohol, cocaine
* inherited: either a familial genetic predisposition to DCM or a specific syndrome e.g. Duchenne muscular dystrophy
** around a third of patients with DCM are thought to have a genetic predisposition
** a large number of heterogeneous defects have been identified
** the majority of defects are inherited in an autosomal dominant fashion although other patterns of inheritance are seen
* infiltrative e.g. haemochromatosis, sarcoidosis
+ these causes may also lead to restrictive cardiomyopathy
* nutritional e.g. wet beriberi (thiamine deficiency)
Pathophysiology
* dilated heart leading to predominately systolic dysfunction
* all 4 chambers are dilated, but the left ventricle more so than right ventricle
* eccentric hypertrophy (sarcomeres added in series) is seen
Features
* classic findings of heart failure
* systolic murmur: stretching of the valves may result in mitral and tricuspid regurgitation
* S3
* 'balloon' appearance of the heart on the chest x-ray
---
>ABCD of DILATED
*Alcohol - BeriBeri -CoxSackie - Doxorubicin
<div id="notecontent">Developmental dysplasia of the hip (DDH) is gradually replacing the old term 'congenital dislocation of the hip' (CDH). It affects around 1-3% of newborns.<br><br>Risk factors<br><ul><li><span class="concept" data-cid="2816">female sex: 6 times greater risk</span></li><li><span id="concept_popover_id_10583" class="concept concept-3-u trigger-link" data-cid="10583" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10583'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating10583' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="Breech presentation is a risk factor for developmental dysplasia of the hip">breech presentation</span></li><li>positive family history</li><li>firstborn children</li><li>oligohydramnios</li><li>birth weight > 5 kg</li><li>congenital calcaneovalgus foot deformity</li></ul><br>DDH is slightly more common in the left hip. Around 20% of cases are bilateral.<br><br>Screening for DDH<br><ul><li>the following infants require a routine ultrasound examination<ul><li>first-degree family history of hip problems in early life</li><li><span class="concept" data-cid="4234">breech presentation at or after 36 weeks gestation</span>, irrespective of presentation at birth or mode of delivery</li><li>multiple pregnancy</li></ul></li><li>all infants are screened at both the newborn check and also the six-week baby check using the Barlow and Ortolani tests</li></ul><br>Clinical examination<br><ul><li><span id="concept_popover_id_3069" class="concept concept-0 trigger-link" data-cid="3069" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3069'>You've never been tested on this concept</div><br><div id='div_concept_rating3069' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(173,255,0)'>Importance: <b>66</b></span> </div>" data-original-title="Barlow manoeuvre: attempted dislocation of a newborns femoral head">Barlow test: attempts to dislocate an articulated femoral head</span></li><li><span id="concept_popover_id_3070" class="concept concept-0 trigger-link" data-cid="3070" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3070'>You've never been tested on this concept</div><br><div id='div_concept_rating3070' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(107,255,0)'>Importance: <b>79</b></span> </div>" data-original-title="Ortolani manoeuvre: attempted relocation of a newborn's femoral head after dislocation due to the Barlow manoeuvre ">Ortolani test: attempts to relocate a dislocated femoral head</span></li><li>other important factors include:<ul><li><span class="concept" data-cid="2278">symmetry of leg length</span></li><li>level of knees when hips and knees are bilaterally flexed</li><li>restricted abduction of the hip in flexion</li></ul></li></ul><br>Imaging<br><ul><li>ultrasound is generally used to confirm the diagnosis if clinically suspected</li><li>however, if the infant is <span class="concept" data-cid="2279">> 4.5 months then x-ray is the first line investigation</span></li></ul><br>Management<br><ul><li>most unstable hips will spontaneously stabilise by 3-6 weeks of age</li><li>Pavlik harness (dynamic flexion-abduction orthosis) in children younger than 4-5 months</li><li>older children may require surgery</li></ul></div>
` The Department of Health advises that all babies that were breech at any point from 36 weeks (even if not breech by time of delivery), babies born before 36 weeks who had breech presentation, and all babies with a first degree relative with a hip problem in early life, should be referred for ultrasound of the hips. If one of a pair of twins is breech, both should be screened. Some Trusts also refer babies with other conditions including oligohydramnios, high birthweight, torticollis, congenital talipes calcaneovalgus and metatarsus adductus`
!!! <center>''DEATH NOTE''</center><br>
Called to see the patient for unresponsiveness.<br>
On exam, the patient did not respond to verbal, physical stimuli.<br>
Absent heart and breath sounds. <br>
Absent peripheral pulses. Pupils are fixed and dilated.<br>
Cardiopulmonary resuscitation was done according to ACLS guidelines.<br>
Patient could not be revived and declared dead.<br>
Cause of Death: <br>
Patient pronounced dead at HH:MMAM/PM on DD/MM/YYYY<br>
Name of the doctor pronouncing death: Dr. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <br>
Place: Ramakrishna Mission Sevashrama(Charitable Hospital),<br> Vrindavan-281121, Mathura, UP<br>
<br>
<br>
<br>
Signature of Doctor
<hr>
!!!<center>''DEATH NOTE FOR BROUGHT DEAD PATIENTS''</center>
Patient was brought to the hospital for unconsciousness/unresponsiveness.<br>
On exam, the patient did not respond to verbal, physical stimuli.<br>
Absent heart and breath sounds. <br>
Absent peripheral pulses. Pupils are fixed and dilated.<br>
Cardiopulmonary resuscitation was done according to ACLS guidelines.<br>
Patient could not be revived.<br>
Patient was brought dead at HH:MM AM/PM on DD/MM/YYYY
Name of the Doctor pronouncing death: Dr. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <br>
Place: Ramakrishna Mission Sevashrama (Charitable Hospital), <br>Vrindavan-281121, Mathura, UP.<br>
<br>
<br>
<br>
Signature:
Degenerative cervical myelopathy (DCM) has a number of risk factors, which include smoking due to its effects on the intervertebral discs, genetics and occupation - those exposing patients to high axial loading.
The presentation of DCM is very variable. Early symptoms are often subtle and can vary in severity day to day, making the disease difficult to detect initially. However as a progressive condition, worsening, deteriorating or new symptoms should be a warning sign.
DCM symptoms can include any combination of:
* Pain (affecting the neck, upper or lower limbs)
* Loss of motor function (loss of digital dexterity, preventing simple tasks such as holding a fork or doing up their shirt buttons, arm or leg weakness/stiffness leading to impaired gait and imbalance
* Loss of sensory function causing numbness
* Loss of autonomic function (urinary or faecal incontinence and/or impotence) - these can occur and do not necessarily suggest cauda equina syndrome in the absence of other hallmarks of that condition
* Hoffman's sign: is a reflex test to assess for cervical myelopathy. It is performed by gently flicking one finger on a patient's hand. A positive test results in reflex twitching of the other fingers on the same hand in response to the flick.
The most common symptoms at presentation of DCM are unknown, but in one series 50% of patients were initially incorrectly diagnosed and sometimes treated for carpal tunnel syndrome.
An MRI of the cervical spine is the gold standard test where cervical myelopathy is suspected. It may reveal disc degeneration and ligament hypertrophy, with accompanying cord signal change.
`All patients with degenerative cervical myelopathy should be urgently referred for assessment by specialist spinal services (neurosurgery or orthopaedic spinal surgery).` This is due to the importance of early treatment. The timing of surgery is important, as any existing spinal cord damage can be permanent. Early treatment (within 6 months of diagnosis) offers the best chance of a full recovery but at present, most patients are presenting too late. In one study, patients averaged over 5 appointments before diagnosis, representing >2 years.
Currently, decompressive surgery is the only effective treatment. It has been shown to prevent disease progression. Close observation is an option for mild stable disease, but anything progressive or more severe requires surgery to prevent further deterioration. Physiotherapy should only be initiated by specialist services, as manipulation can cause more spinal cord damage.
---
>Hoffman UMN Lesions
*Degenerative Cervical Myelopathy - MS
---
```
Postoperatively, patients with cervical myelopathy require ongoing follow-up as pathology can 'recur' at adjacent spinal levels, which were not treated by the initial decompressive surgery. This is called adjacent segment disease. Furthermore, surgery can change spinal dynamics increasing the likelihood of other levels being affected. Patients sometimes develop mal-alignment of the spine, including kyphosis and spondylolisthesis, and this can also affect the spinal cord. All patients with recurrent symptoms should be evaluated urgently by specialist spinal services.
```
!!!<center>''DELIRIUM TREMENS / MAJOR ALCOHOL WITHDRAWAL''</center>
<hr>
* A 55-year-old intoxicated man is admitted with abdominal pain and elevated amylase under Adi Sir. On the third hospital day, he is found talking incoherently and is markedly diaphoretic and very tremulous.
* What are the patient’s vital signs? Hypertension, tachycardia, fever?
* What is the patient’s mental status?
* Altered levels of consciousness and impaired cognitive function define delirium.
* Hallucinations and confusion?
* What is the patient’s airway status? Intubate if necessary
* Is there a history of alcohol abuse? Is there a history of DTs? Is there a history of alcohol withdrawal seizures?
* When was the patient’s last drink?
* Knowing the length of time since the last drink will assist in the diagnosis of DTs.
* Minor alcohol withdrawal usually begins 6–8 hours after cessation of drinking, peaks at about 24 hours, and usually resolves within 48 hours.
* The onset of DTs varies between 2-14 days after ethanol cessation, but usually occurs during the first 4 days.
* But also rule out other causes. Refer to topic COMA
* Check RBS, KFT, LFT, ABG if needed, B12 level if needed, CBC
* CXR, ECG, CT head if needed, LP if needed
* Diazepam 10–20 mg PO every 1–2 hours (or 5 mg IV every 5 min) until symptoms subside or
* Lorazepam (Ativan) 1-2 mg every 2 hours sos
* Symptom-triggered dosing.
* Diazepam 10–20 mg PO or chlordiazepoxide (Librium) 50–100 mg PO is given; or lorazepam (Ativan) 2–4 mg PO initially with additional doses every 1–2 hours if assessment indicates a need for more medication.
* Scheduled dosing.
* Diazepam 10–20 mg every 4–6 hours for 1–3 days, decreasing the dose by half every day. An as-needed dose of 5–10 mg every 2–4 hours is made available.
* Chlordiazepoxide (Librium) 50–100 mg every 6 hours can be given for 1–3 days, decreasing the dose by half every day with an additional 25–50 mg every 2–4 hours as needed.
* Lorazepam (Ativan) PO or IM should be considered with moderate to severe hepatic dysfunction.
<hr>
<center>''Delirium Tremens''</center>
<hr>
* ''Admit in ICU''
* Inj Thiamine 100 mg IV in IVF
* Start DNS with MVI
* Hypokalemia. Replace K
* Hypophosphatemia. Replace PO4
* Hypomagnesemia: replace Mg
* Replacement is generally either IV or IM.
* Restraints needed
* Clonidine (Arkamin) 0.1–0.2 mg PO bid can be used for autonomic symptoms.
* Haloperidol (Serenace). 2–10 mg PO, IV, or IM, can be used for hallucinations or for agitation not responding to benzos
* PCM for fever
Othello syndrome is a delusional belief that a patients partner is committing infidelity despite no evidence of this. It can often result in violence and controlling behaviour.
De Clerambault syndrome (otherwise known as erotomania), is where a patient believes that a person of a higher social or professional standing is in love with them. Often this presents with people who believe celebrities are in love with them.
Ekbom syndrome is also known as delusional parasitosis and is the belief that they are infected with parasites or have 'bugs' under their skin. This can vary from the classic psychosis symptoms in narcotic use where the user can 'see' bugs crawling under their skin or can be a patient who believes that they are infested with snakes.
Capgras delusion is the belief that friends or family members have been replaced by an identical looking imposter.
Cotard syndrome is a rare mental disorder where the affected patient believes that they (or in some cases just a part of their body) is either dead or non-existent. This delusion is often difficult to treat and can result in significant problems due to patients stopping eating or drinking as they deem it not necessary.
Common causes
*Alzheimer's disease
*cerebrovascular disease: multi-infarct dementia (c. 10-20%)
*Lewy body dementia (c. 10-20%)
Rarer causes (c. 5% of cases)
*Huntington's
*CJD
*Pick's disease (atrophy of frontal and temporal lobes)
*HIV (50% of AIDS patients)
Important differentials, potentially treatable
*hypothyroidism, Addison's
*B12/folate/thiamine deficiency
*syphilis
*brain tumour
*normal pressure hydrocephalus
*subdural haematoma
*depression
*chronic drug use e.g. Alcohol, barbiturates
;Drugs approved for use
Acetylcholinesterase inhibitors
* Memantine
* Donepizil (given in early stages)
* Rivastigmine
* Galantamine
>MEMorize the DONs that fought GALANTly against RIVALs
:M EMantine - DONepizil - GALANTamine - RIVAstigmin
Factors suggesting diagnosis of depression over dementia
* short history, rapid onset
* biological symptoms e.g. weight loss, sleep disturbance
* patient worried about poor memory
* reluctant to take tests, disappointed with results
* mini-mental test score: variable
* global memory loss (dementia characteristically causes recent memory loss)
`Rapid onset, biological symptoms and global memory loss point to a diagnosis of depression rather than dementia`
<div id="notecontent">The table below lists the major dermatome landmarks:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Nerve root</b></th><th><b>Landmark</b></th><th><b>Mnemonics</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="8466">C2</span></td><td>Posterior half of the skull (cap)</td><td></td></tr><tr><td><span class="concept" data-cid="8467">C3</span></td><td>High turtleneck shirt</td><td></td></tr><tr><td><span class="concept" data-cid="8468">C4</span></td><td>Low-collar shirt</td><td></td></tr><tr><td>C5</td><td>Ventral axial line of upper limb</td></tr><tr><td><span class="concept" data-cid="8469">C6</span></td><td><span class="concept" data-cid="1337">Thumb + index finger</span></td><td><div class="alert alert-warning">Make a 6 with your left hand by touching the tip of the thumb & index finger together - C6</div></td></tr><tr><td><span class="concept" data-cid="1338">C7</span></td><td>Middle finger + palm of hand</td><td></td></tr><tr><td><span class="concept" data-cid="1339">C8</span></td><td>Ring + little finger</td><td></td></tr><tr><td><span class="concept" data-cid="1336">T4</span></td><td>Nipples</td><td><div class="alert alert-warning">T4 at the Teat Pore</div></td></tr><tr><td><span class="concept" data-cid="8470">T5</span></td><td>Inframammary fold</td><td></td></tr><tr><td><span class="concept" data-cid="8471">T6</span></td><td>Xiphoid process</td><td></td></tr><tr><td><span class="concept" data-cid="5450">T10</span></td><td>Umbilicus</td><td><div class="alert alert-warning">BellybuT-TEN</div></td></tr><tr><td><span class="concept" data-cid="8472">L1</span></td><td>Inguinal ligament</td><td><div class="alert alert-warning">L for ligament, 1 for 1nguinal </div></td></tr><tr><td><span class="concept" data-cid="1335">L4</span></td><td>Knee caps</td><td><div class="alert alert-warning">Down on aLL fours - L4</div></td></tr><tr><td><span class="concept" data-cid="8473">L5</span></td><td>Big toe, dorsum of foot (except lateral aspect)</td><td><div class="alert alert-warning">L5 = Largest of the 5 toes</div></td></tr><tr><td><span class="concept" data-cid="8474">S1</span></td><td>Lateral foot, small toe</td><td><div class="alert alert-warning">S1 = the smallest one</div></td></tr><tr><td><span class="concept" data-cid="9943">S2, S3</span></td><td>Genitalia</td><td></td></tr></tbody></table></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd009b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd009.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd009b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd010b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd010.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd010b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
!!Diabetes insipidus (DI)
<div id="body_content">
is a condition characterised by either a deficiency of antidiuretic hormone, ADH, (cranial DI) or an insensitivity to antidiuretic hormone (nephrogenic DI).<br><br>Causes of cranial DI<br><ul><li>idiopathic</li><li>post head injury</li><li>pituitary surgery</li><li>craniopharyngiomas</li><li>histiocytosis X</li><li>DIDMOAD is the association of cranial Diabetes Insipidus, Diabetes Mellitus, Optic Atrophy and Deafness (also known as Wolfram's syndrome)</li><li><span class="concept" data-cid="9748">haemochromatosis</span></li></ul><br>Causes of nephrogenic DI<br><ul><li><span class="concept" data-cid="9929">genetic: the more common form affects the vasopression (ADH) receptor, the less common form results from a mutation in the gene that encodes the aquaporin 2 channel</span></li><li>electrolytes: hypercalcaemia, hypokalaemia</li><li>drugs: demeclocycline, <span class="concept" data-cid="9521">lithium</span></li><li>tubulo-interstitial disease: obstruction, sickle-cell, pyelonephritis</li></ul><br><span class="concept" data-cid="4453">Features</span><br><ul><li>polyuria</li><li>polydipsia</li></ul><br>Investigation<br><ul><li><span class="concept" data-cid="1006">high plasma osmolality, low urine osmolality</span></li><li>a urine osmolality of >700 mOsm/kg excludes diabetes insipidus</li><li><span class="concept" data-cid="4791">water deprivation test</span></li></ul><br>Management<br><ul><li>nephrogenic diabetes insipidus: thiazides, low salt/protein diet</li></ul> - <span class="concept" data-cid="8354">central diabetes insipidus can be treated with desmopressin</span></div>
!!! <center>''DIABETES MELLITUS MEDICATIONS''</center>
|!Agent|!Administration|!Type|!Mechanism|!Contraindications|
|''Biguanides''<br>Metformin<br>Glucophage|with meals|Tablet or Oral Solution|Increases Insulin sensitivity and reduces inappropriate glucose production in the liver|Stop if Sepsis<br>Stop if eGFR <= 30 and/or Cr >150<br>Stop prior to iodinated contrasts and restart after 48h after scan<br>Caution in HF-increased risk of Lactic acidosis|
|''Sulphonylureas''<br>Gliclazide<br>Glimipiride<br>Glipizide|Premeal(Gliclazide MR or Glimepiride preferable in patients with CVD to continue as Beta cell specific)|Tablet|Stimulate Beta cells to produce more insulin<br>''Can cause HypoGlycemia''|Stop if eGFR <=30 as high risk of Hypoglycemia<br>DKA<br>Recurrent HypoGlycemia<br>Pregnancy<br>Severe Hepatic Impairment|
|''Thiazolidinediones''<br>Glitazones eg., Pioglitazone|Once in Morning|Tablet|Increases Insulin sensitivity|Increased risk of Heart Failure- Stop if CVD<br>Hematuria or h/o Bladder Ca<br>Over the age of <br>Hepatic impairment<br>Pregnancy|
|''Alpha Glucosidase Inh''<br>Acarbose|with meals|Tablet|Reduces the breakdown of Carbs|Pregnancy<br>Avoid if eGFR<25<br>Hepatic Impairment|
|''DPP-4 Inh''<br>Gliptines eg., <br>Linagliptin<br>Sitagliptin<br>Saxagliptin<br>Alogliptin|Once in Morning|Tablet|Delays the breakdown of incretin hormones that increase insulin production when eating|Risk of Pancreatitis<br>Pregnancy<br>Saxagliptin and Alogliptin study shown increased risk of hospitalization with heart failure<br>DKA|
|''SGLT2 Inh''<br>Dapagliflozin<br>Emphagliflozin<br>Canagliflozin|Once in Morning|Tablet|Block the reabsorption of Glulcose in Kidney, increase Glucose excretion, lower glucose levels|DKA<br>Avoid if eGFR < 45-60 Depending on the SGLT2 being taken<br>Pregnancy|
|''GLP1 receptor agonist'' - non insulin injectable<br>Liraglutide<br>Exenatide<br>Bydureon<br>Dulaglutide|OD, BD premeal, Once weekly|Injection|Mimics Incretin, slows gastric emptying, helps lower hepatic glucose output, stimulate beta cells to release insulin|Pancreatitis or risk of Pancreatitis<br>Thyroid Ca<br>Pregnancy<br>Severe GI disease<br>CHF<br>Avoid if eGFR 30-50 depending on the drug|
|''Insulin secretagogues''<br>Nateglinide<br>Repaglinide||Tablet|Beta cell stimulation, increase Insulin secretion, <br>''can cause HypoGlycemia''|Repaglinide:<br>If eGFR<30, start at 0.5mg with meals and titrate slowly, max single dose 2mg, max daily dose 8mg, if eGFR>30, max daily dose 16mg|
|!INSULINS|<|<|<|<|
|!Type of Insulin|!Administration|!Onset|!Duration|!Notes|
|''Rapid acting Prandial insulin''<br>Novorapid(flexpen)<br>Humalog(kwikpen)<br>Apidra(solostar)|Pre Meal|10-15min|4-5h|Novorapid can be used until Humalog or Apidra available(must be prescribed) Any changes to insulin type - dose to be reduced by 10-20%|
|''Short acting Prandial insulin''<br>Actrapid<br>Humulin S(cartridge - Savvio pen can be obtained through GP or DSN)<br>Insuman Rapid|Give 30min pre meal(prescrible pre meal)|30 min|8h||
|''Intermediate acting Basal Insulin''<br>Humulin I(Kwikpen)<br>Insulatard(Innolet)<br>Insuman Basal(solostar)|OD or BD with/without meals(to be continued if on a sliding scale, dose can be reduced if necessary)|30-60min|11-24h|Humulin I is stocked on the wards and can be used temporarily if Insulatard or Insuman basal not available(must be prescribed)<br>Any changes to insulin type-dose to be reduced by 10-20%|
|''Pre mixed Insulin''<br>Humalog Mix 25 or 50 (Kwikpen)<br>Novomix 30(Flex pen)|Pre meal|10-15min|~|Humulin M3 can be used temporarily as an alternative to Novomix 30 until available(must be prescribed)<br>Any changes to insulin type-dose to be reduced by 10-20%|
|''Pre mixed Insulin''<br>Humulin M3(Kwikpen)<br>Insuman comb 15, 25 or 50|30min Pre meal(prescribe pre meal)|30-90min|~|~|
|''Long acting Basal Insulin''<br>Lantus(Solostar)<br>Levemir<br>Abasaglar<br>Toujeo(pre-filled pen)<br>Tresiba|OD<br>Levemir can be given BD(to be continued on sliding scale, dose can be reduced if necessary)||14-42h|Lantus can be used as an alternative until usual basal insulin available(must be prescribed<br>Any changes to insulin type-dose to be reduced by 10-20%|
|!DIABETIC MEDICATIONS (INDIA)|<|
|Metformin|Tab Elcephase/Metchek/Glyciphage 500 mg BD, 1 month, with meals|
|Acarbose|Tab. Glucobay 25 mg TDS with the first bite of each main meal|
|Voglibose|Tab K-Vog/Voglistar 0.2/0.3 mg TDS before meals, 1 month|
|Gliclazide|Tab Glykind 40 mg BD, 1 month, with meals|
|Gliclazide+<br>Metformin|Tab Glychek M 30/400 60/500 BD, 1 month, with meals|
|Glimepiride|Tab Isryl/K Glim/Glimestar 1/2 mg OD, 1 month, with breakfast or the first main meal|
|Glimepiride+<br>Metformin|Tab Kglim M/Glimestar M1 mg BD, 1 month, with breakfast or the first main meal|
|Glimepiride+<br>Metformin+<br>Piogli|Tab K Pio GM/Pio plus/Glimestar PM1 mg BD, 1 month, with breakfast or the first main meal|
|Glimepiride+<br>Metformin+<br>Vogli|Tab K Glim Trio/Vogs GM 1/500/0.2 OR 2/500/0.3 BD, 1 month, with breakfast or the first main meal|
|Glipizide|Tab Glynase 5 mg OD, 1 month, 30 minutes before a meal|
|Glipizide+<br>Metformin|Tab Glynase-MF BD, 1 month, with meals|
|Metformin+<br>Teneliglip|TabTenglyn M/Totaglipt M 500/20 mg BD, 1 month, with meals|
|Pioglitazone|Tab K-Pio 15/30 mg OD|
|Pioglitazone+<br>Metformin|Tab Glyciphage-P BD 1 month with meals|
|Tenligliptin|Tab Tenefit/Tenlimac/Teniblu 20 mg OD, 2 wks|
|Sitagliptin|Tab Zanuvia 100 mg OD, 2 wks|
|Saxagliptin|Tab Onglyza 2.5/5 mg OD|
|Linagliptin|Tab Trajenta 5 mg OD|
|Canagliflozin|Tab Sulisent 100 mg TDS|
|Dapagliflozin|Tab Oxra 5/10 mg OD|
|Empagliflozin|Tab Jardiance 10/25 mg OD|
|Nateglinide|Tab Natelide/Glinate 60/120 mg TDS, 30 min before meals, 2 wks|
|Nateglinide+<br>Metformin|Tab Glinate MF 60/500 mg TDS, 30 min before meals, 2 wks|
|Repaglinide|Tab Repide 0.5 mg 15 min before each meal TDS|
| !GASTROPARESIS |<|
|Metoclopramide|Tab Perinorm 10 mg TDS, 2 wks 30 minutes before meals or food and at bedtime|
| !NEPHROPATHY |<|
|Captopril|Tab Angiopril 25 mg TDS, 1 month|
|Irbesartan|Tab Irovel 150 mg OD, 1 month|
|Losartan|Tab Zilos/Losakind/Losar 50 mg OD, 1 month|
| !NEUROPATHY |<|
|Amitriptyline|Tab Tryptomer 25 mg, 1 tab, h.s. 2 wks|
|Amitriptyline+<br>Mecobal|Tab Amnurite 5/10/25+1500, 1 tab, h.s. 2 wks|
|Amitriptyline+<br>Pregaba|Tab Amnurite P 10/75, 1 tab, BD 2 wks|
|Amitriptyline+<br>Chlordiaz|Tab Limbitrol H(12.5/5), 1 tab, OD 2 wks|
|Amitriptyline+Gabapentin|Tab Tryptomer G 100/10-300/10, 1 tab, BD 2 wks|
|Duloxetine|Cap Dulot/Dulane 40 mg OD, 1 month|
|Gabapentin|Cap Gabacap/Gabapin 100/300 mg TDS, 2 wks|
|Gabapentin+<br>B12+<br>ALA|Cap Gabapin Plus 100/300 BD, 1 month|
|Gabapentin+<br>Nortrip|Tab Pentanerv NT 100/10-400/100/ Gabaneuron NT/ Gabapin NT 1 month|
|Gabapentin+<br>B12|Cap Neurokind-G 100/500 BD, 1 month|
|Gabapentin+<br>Capsacin+<br>Diclofen+<br>Methyl salc|Oint Orthosenz BD, 1 month|
|Gabapentin+<br>Capsacin+<br>Ketoprof+<br>Methyl salc|Orthosenz Gel/Deep senz Oint BD, 1 month|
|Pregabalin|Cap Gabafit/Nuramed 75 mg BD, 2 wks|
|Pregabalin+<br>B12+<br>ALA+<br>FA+<br>B6|Cap Neurokem Plus/Pevesca Plus/Pregabid Forte BD, 2 wks|
|Pregabalin+<br>B12+<br>ALA|Cap Nova Plus/Maxmala Pregabid Forte BD, 2 wks|
|Pregabalin+<br>B12+<br>Benfotiamine+<br>B6|Cap Meganeuron PG BD, 2 wks|
|Pregabalin+<br>B12|Cap Gabafit M/Maxgalin M BD, 2 wks|
|Topiramate|Tab Nextop 25 mg OD, 2 wks|
<div id="notecontent">Diabetic retinopathy is the most common cause of blindness in adults aged 35-65 years-old. Hyperglycaemia is thought to cause increased retinal blood flow and abnormal metabolism in the retinal vessel walls. This precipitates damage to endothelial cells and pericytes<br><br>Endothelial dysfunction leads to increased vascular permeability which causes the characteristic exudates seen on fundoscopy. Pericyte dysfunction predisposes to the formation of microaneurysms. Neovasculization is thought to be caused by the production of growth factors in response to retinal ischaemia<br><br>In exams you are most likely to be asked about the characteristic features of the various stages/types of diabetic retinopathy. Recently a new classification system has been proposed, dividing patients into those with non-proliferative diabetic retinopathy (NPDR) and those with proliferative retinopathy (PDR):<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Traditional classification</b></th><th><b>New classification</b></th></tr></thead><tbody><tr><td>Background retinopathy<br><ul><li>microaneurysms (dots)</li><li>blot haemorrhages (<=3)</li><li>hard exudates</li></ul><br>Pre-proliferative retinopathy<br><ul><li>cotton wool spots (soft exudates; ischaemic nerve fibres)</li><li>> 3 blot haemorrhages</li><li>venous beading/looping</li><li>deep/dark cluster haemorrhages</li><li>more common in Type I DM, treat with laser photocoagulation</li></ul></td><td>Mild NPDR<br><ul><li>1 or more microaneurysm</li></ul><br>Moderate NPDR<br><ul><li>microaneurysms</li><li>blot haemorrhages </li><li>hard exudates</li><li>cotton wool spots, venous beading/looping and intraretinal microvascular abnormalities (IRMA) less severe than in severe NPDR</li></ul><br>Severe NPDR<br><ul><li>blot haemorrhages and microaneurysms in 4 quadrants</li><li>venous beading in at least 2 quadrants</li><li>IRMA in at least 1 quadrant</li></ul></td></tr></tbody></table></div><br>Proliferative retinopathy<br><ul><li>retinal neovascularisation - may lead to vitrous haemorrhage</li><li>fibrous tissue forming anterior to retinal disc</li><li>more common in Type I DM, 50% blind in 5 years</li></ul><br>Maculopathy<br><ul><li>based on location rather than severity, anything is potentially serious</li><li>hard exudates and other 'background' changes on macula</li><li>check visual acuity</li><li>more common in Type II DM</li></ul></div>
{{MetFormin}}
---
{{ThiazolidineDiones}}
{{SulfonylUrea}}
---
{{MeGlitinides}}
---
{{GlipTin}}
---
Digoxin is a cardiac glycoside now mainly used for rate control in the management of atrial fibrillation. As it has positive inotropic properties it is sometimes used for improving symptoms (but not mortality) in patients with heart failure.
Mechanism of action
* decreases conduction through the atrioventricular node which slows the ventricular rate in atrial fibrillation and flutter
* increases the force of cardiac muscle contraction due to inhibition of the Na+/K+ ATPase pump. Also stimulates vagus nerve
* digoxin has a narrow therapeutic index
Monitoring
* digoxin level is not monitored routinely, except in suspected toxicity
* if toxicity is suspected, digoxin concentrations should be measured within 8 to 12 hours of the last dose
{{DiGoxinTox}}
---
*Competes with Spironolactone for excretion and causing GynecoMastia (both cause it)
---
!!Digoxin Toxicity
Plasma concentration alone does not determine whether a patient has developed digoxin toxicity. Toxicity may occur even when the concentration is within the therapeutic range. The BNF advises that the likelihood of toxicity increases progressively from 1.5 to 3 mcg/l.
Features
* generally unwell, lethargy, nausea & vomiting, anorexia, confusion, yellow-green vision
* arrhythmias (e.g. AV block, bradycardia)
* gynaecomastia
Precipitating factors
* classically: hypokalaemia
** digoxin normally binds to the ATPase pump on the same site as potassium. Hypokalaemia → digoxin more easily bind to the ATPase pump → increased inhibitory effects
* increasing age
* renal failure
* myocardial ischaemia
* hypomagnesaemia, hypercalcaemia, hypernatraemia, acidosis
* hypoalbuminaemia
* hypothermia
* hypothyroidism
* Drugs
** heart medications: amiodarone, quinidine, verapamil, diltiazem
** ciclosporin
** spironolactone (competes for secretion in distal convoluted tubule therefore reduce excretion)
** drugs which cause hypokalaemia e.g. thiazides and loop diuretics
Management
* Digibind
* correct arrhythmias
* monitor potassium
<hr><center>''DILTIAZEM''</center><hr>
<center>''Adult Dosage''</center><hr>
''Rate control in A fib, A flutter and SVT:''
* Inj Dilzem 5 mg in 1 amp; 2-3 amp IV STAT (Initial bolus: 0.25 mg/kg over 2 min (ave adult dose: 20 mg); rec 15-20 mg); Repeat after 15 min if the response is inadequate): 0.35 mg/kg over 2 minutes (ave: 25 mg); ACLS 20-25 mg
Diphtheria is caused by the Gram positive bacterium Corynebacterium diphtheriae
Pathophysiology
* releases an exotoxin encoded by a β-prophage
* exotoxin inhibits protein synthesis by catalyzing ADP-ribosylation of elongation factor EF-2
Diphtheria toxin commonly causes a 'diphtheric membrane' on tonsils caused by necrotic mucosal cells. Systemic distribution may produce necrosis of myocardial, neural and renal tissue
Possible presentations
* recent visitors to Eastern Europe/Russia/Asia
* sore throat with a 'diphtheric membrane' - see above
* bulky cervical lymphadenopathy
* neuritis e.g. cranial nerves
* heart block
<div id="notecontent">Discitis is an infection in the intervertebral disc space. It can lead to serious complications such as sepsis or an epidural abscess. <br><br>Features<br><ul><li>Back pain</li><li>General features<ul><li>pyrexia,</li><li>rigors</li><li>sepsis</li></ul></li><li><span id="concept_popover_id_10513" class="concept concept-0 trigger-link" data-cid="10513" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10513'>You've never been tested on this concept</div><br><div id='div_concept_rating10513' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="Signs of systemic sepsis with changing lower limb neurology = possible epidural abscess">Neurological features</span><ul><li>e.g. changing lower limb neurology </li><li>if epidural abscess develops</li></ul></li></ul><br>Causes<br><ul><li>Bacterial<ul><li><span id="concept_popover_id_3253" class="concept concept-3-u trigger-link" data-cid="3253" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3253'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating3253' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(168,255,0)'>Importance: <b>67</b></span> </div>" data-original-title="<i>Staphylococcus aureus</i> is the most common cause of discitis"><i>Staphylococcus aureus</i></span> is the most common cause of discitis</li></ul></li><li>Viral</li><li>TB</li><li>Aseptic</li></ul><br>Diagnosis<br><ul><li>Imaging: <span class="concept" data-cid="2272">MRI has the highest sensitivity</span></li><li>CT guided biopsy may be required to guide antimicrobial treatment</li></ul><br>Treatment<br><ul><li>The standard therapy requires six to eight weeks of intravenous antibiotic therapy</li><li>Choice of antibiotic is dependent on a variety of factors. The most important factor is to identify the organism with a positive culture (e.g. blood culture, or CT guided biopsy)</li></ul><br>Complications<br><ul><li>sepsis</li><li><span class="concept" data-cid="3173">epidural abscess</span></li></ul><br>Further investigation:<br><ul><li>Assess the patient for endocarditis e.g. with <span id="concept_popover_id_10514" class="concept concept-0 trigger-link" data-cid="10514" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10514'>You've never been tested on this concept</div><br><div id='div_concept_rating10514' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(35,255,0)'>Importance: <b>93</b></span> </div>" data-original-title="In discitis due to <i>Staphylococcus</i> an echo is needed to look for endocarditis ">transthoracic echo</span> or transesophageal echo. Discitis is usually due to haematogenous seeding of the vertebrae implying that the patient has had a bacteraemia and seeding could have occurred elsewhere</li></ul></div>
<div id="notecontent">Discitis is an infection in the intervertebral disc space. It can lead to serious complications such as sepsis or an epidural abscess. <br><br>Features<br><ul><li>Back pain</li><li>General features<ul><li>pyrexia,</li><li>rigors</li><li>sepsis</li></ul></li><li><span id="concept_popover_id_10513" class="concept concept-0 trigger-link" data-cid="10513" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10513'>You've never been tested on this concept</div><br><div id='div_concept_rating10513' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="Signs of systemic sepsis with changing lower limb neurology = possible epidural abscess">Neurological features</span><ul><li>e.g. changing lower limb neurology </li><li>if epidural abscess develops</li></ul></li></ul><br>Causes<br><ul><li>Bacterial<ul><li><span id="concept_popover_id_3253" class="concept concept-3-u trigger-link" data-cid="3253" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3253'>You've been tested on this concept once, 1 week ago, and got the associated question correct.</div><br><div id='div_concept_rating3253' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(158,255,0)'>Importance: <b>69</b></span> </div>" data-original-title="<i>Staphylococcus aureus</i> is the most common cause of discitis"><i>Staphylococcus aureus</i></span> is the most common cause of discitis</li></ul></li><li>Viral</li><li>TB</li><li>Aseptic</li></ul><br>Diagnosis<br><ul><li>Imaging: <span class="concept" data-cid="2272">MRI has the highest sensitivity</span></li><li>CT guided biopsy may be required to guide antimicrobial treatment</li></ul><br>Treatment<br><ul><li>The standard therapy requires six to eight weeks of intravenous antibiotic therapy</li><li>Choice of antibiotic is dependent on a variety of factors. The most important factor is to identify the organism with a positive culture (e.g. blood culture, or CT guided biopsy)</li></ul><br>Complications<br><ul><li>sepsis</li><li><span class="concept" data-cid="3173">epidural abscess</span></li></ul><br>Further investigation:<br><ul><li>Assess the patient for endocarditis e.g. with <span id="concept_popover_id_10514" class="concept concept-1 trigger-link" data-cid="10514" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10514'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating10514' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(35,255,0)'>Importance: <b>93</b></span> </div>" data-original-title="In discitis due to <i>Staphylococcus</i> an echo is needed to look for endocarditis ">transthoracic echo</span> or transesophageal echo. Discitis is usually due to haematogenous seeding of the vertebrae implying that the patient has had a bacteraemia and seeding could have occurred elsewhere</li></ul></div>
<div id="notecontent">A prolapsed lumbar disc usually produces clear <span class="concept" data-cid="10511">dermatomal leg pain</span> associated with neurological deficits.<br><br>Features<br><ul><li>leg pain usually worse than back</li><li>pain often worse when sitting</li></ul><br>The table below demonstrates the expected features according to the level of compression:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Site of compression</b></th><th><b>Features</b></th></tr></thead><tbody><tr><td><b>L3 nerve root compression</b></td><td>Sensory loss over anterior thigh<br>Weak quadriceps<br>Reduced knee reflex<br>Positive femoral stretch test</td></tr><tr><td><b>L4 nerve root compression</b></td><td>Sensory loss anterior aspect of knee<br>Weak quadriceps<br>Reduced knee reflex<br>Positive femoral stretch test</td></tr><tr><td><b>L5 nerve root compression</b></td><td><span id="concept_popover_id_447" class="concept concept-0 trigger-link" data-cid="447" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative447'>You've never been tested on this concept</div><br><div id='div_concept_rating447' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(20,255,0)'>Importance: <b>96</b></span> </div>" data-original-title="L5 lesion features = loss of foot dorsiflexion + sensory loss dorsum of the foot">Sensory loss dorsum of foot</span><br><span class="concept" data-cid="4915">Weakness in foot and big toe dorsiflexion</span><br><span class="concept" data-cid="4915">Reflexes intact</span><br>Positive sciatic nerve stretch test</td></tr><tr><td><b>S1 nerve root compression</b></td><td><span class="concept" data-cid="1720">Sensory loss posterolateral aspect of leg and lateral aspect of foot</span><br><span class="concept" data-cid="1720">Weakness in plantar flexion of foot</span><br><span class="concept" data-cid="1720">Reduced ankle reflex</span><br>Positive sciatic nerve stretch test</td></tr></tbody></table></div><br>Management<br><ul><li>similar to that of other musculoskeletal lower back pain: analgesia, physiotherapy, exercises</li><li><span class="concept" data-cid="10512">if symptoms persist 9e.g. after 4-6 weeks) then referral for consideration of MRI is appropriate</span></li></ul></div>
---
>L4 on KNEE - L3 on TOP(of Knee, i.e., Thigh)
*Difference between L3 and L4 is just sensory loss
*Rest are common: Weak quadriceps - Reduced knee reflex - Positive femoral stretch
---
>L345 covers Anterior Leg (except Lateral Foot Sensation by S1) - S is posterior
---
<div id="body_content">
The table below summarises the findings in patients who have disorders of sex hormones:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Disorder</b></th><th><b>LH</b></th><th><b>Testosterone</b></th></tr></thead><tbody><tr><td>Primary hypogonadism (<span class="concept" data-cid="9076">Klinefelter's syndrome</span>)</td><td>High</td><td>Low</td></tr><tr><td>Hypogonadotrophic hypogonadism (<span class="concept" data-cid="9077">Kallman's syndrome</span>)</td><td>Low</td><td>Low</td></tr><tr><td><span class="concept" data-cid="9078">Androgen insensitivity syndrome</span></td><td>High</td><td>Normal/high</td></tr><tr><td><span class="concept" data-cid="9079">Testosterone-secreting tumour</span></td><td>Low</td><td>High</td></tr></tbody></table></div><br><b>Klinefelter's syndrome</b><br><br>Klinefelter's syndrome is associated with karyotype 47, XXY<br><br>Features<br><ul><li>often taller than average</li><li>lack of secondary sexual characteristics</li><li>small, firm testes</li><li>infertile</li><li>gynaecomastia - increased incidence of breast cancer</li><li>elevated gonadotrophin levels</li></ul><br>Diagnosis is by chromosomal analysis<br><br><br><b>Kallman's syndrome</b><br><br>Kallman's syndrome is a recognised cause of delayed puberty secondary to hypogonadotrophic hypogonadism. It is usually inherited as an X-linked recessive trait. Kallman's syndrome is thought to be caused by failure of GnRH-secreting neurons to migrate to the hypothalamus.<br><br>The clue given in many questions is lack of smell (anosmia) in a boy with delayed puberty<br><br>Features<br><ul><li>'delayed puberty'</li><li>hypogonadism, cryptorchidism</li><li>anosmia</li><li>sex hormone levels are low</li><li>LH, FSH levels are inappropriately low/normal</li><li>patients are typically of normal or above average height</li></ul><br>Cleft lip/palate and visual/hearing defects are also seen in some patients<br><br><br><b>Androgen insensitivity syndrome</b><br><br>Androgen insensitivity syndrome is an X-linked recessive condition due to end-organ resistance to testosterone causing genotypically male children (46XY) to have a female phenotype. Complete androgen insensitivity syndrome is the new term for testicular feminisation syndrome<br><br>Features<br><ul><li><span class="concept" data-cid="3235">'primary amenorrhoea'</span></li><li>undescended testes causing groin swellings</li><li>breast development may occur as a result of conversion of testosterone to oestradiol</li></ul><br>Diagnosis<br><ul><li>buccal smear or chromosomal analysis to reveal 46XY genotype</li></ul><br>Management<br><ul><li>counselling - raise child as female</li><li>bilateral orchidectomy (increased risk of testicular cancer due to undescended testes)</li><li>oestrogen therapy</li></ul></div>
!!!<center>''DIVERTICULITIS''</center>
<hr>
* Mild/Mod: Augmentin 625 TDS 7ds OR Cipro+Metro 7ds; Ceftriaxone 1 gm IV q24h + Metro 500 IV Q8H; Cipro 400 IV Q12H + Metro 500 IV Q8H; Mod: Ceftriaxone 2 gm IV OD + Metro 500 IV q8h Severe: Pip/taz 4.5 IV Q8H OR Cefoperazone-sulb 3 gm IV q12h OR Mero 1gm Q8H
| !DIVERTICULITIS DRUGS |<|
|Ciprofloxacin|Tab Ciplox 500 BD, 1 wk|
|Metronidazole|Tab Metrogyl 400 mg TDS, 1 wk, with food|
|Amoxycillin-clav|Tab Augmentin 1 gm BD 10d|
|Digestive enzymes<br>Fungal diastase,<br>Papain, <br>Charcoal,<br>Dimethacone|Cap Bestozyme 1 cap TDS after meals<br>Syr Bestozyme 1-2 tsp TDS after meals<br>Dps Bestozyme 10 dps TDS after meals<br>Tab Digeplex/Unienzyme 1-2 tab TDS after meals<br>Syr Digeplex/Unienzyme1-2 tsp TDS after meals<br>Dps Digeplex/Unienzyme10 dps TDS after meals|
<div id="body_content">
Diverticulosis is an extremely common disorder characterised by multiple outpouchings of the bowel wall, most commonly in the sigmoid colon. Strictly speaking the term diverticular disease is reserved for patients who are symptomatic - <span class="concept" data-cid="8482">diverticulosis</span> is the more accurate term for diverticula being present.<br><br>Risk factors<br><ul><li>increasing age</li><li><span class="concept" data-cid="2953">low-fibre diet</span></li></ul><br>Diverticulosis can present in a number of ways:<br><ul><li>painful diverticular disease: altered bowel habit, colicky left sided abdominal pain. A high fibre diet is usually recommended to minimise symptoms</li><li>diverticulitis: see below for more details</li></ul><br><b>Diverticulitis</b><br><br>One of the diverticular become infected. The classical presentation is:<br><ul><li>left iliac fossa pain and tenderness</li><li>anorexia, nausea and vomiting</li><li>diarrhoea </li><li>features of infection (pyrexia, raised WBC and CRP)</li></ul><br>Management:<br><ul><li>mild attacks can be treated with oral antibiotics</li><li>more significant episodes are managed in hospital. Patients are made nil by mouth, intravenous fluids and intravenous antibiotics (typical a cephalosporin + metronidazole) are given</li></ul><br>Complications of diverticulitis include:<br><ul><li>abscess formation</li><li>peritonitis</li><li>obstruction</li><li>perforation</li></ul></div>
!!!<center>''DIZZINESS''</center>
<hr>
//You are called by the nurse to evaluate a 65-year-old woman complaining of dizziness//
* Immediate Questions
* What is the patient’s description of the dizziness?
* Classify dizziness into one of four specific categories (vertigo, pre-syncope, disequilibrium, or lightheadedness).
* What are the patient’s vital signs?
* Get orthostatics
* Arrhythmia if tachycardic or bradycardic or has an irregular rhythm.
* What are the patient’s medications?
* What are the onset and duration of the dizziness?
* In general, the most common causes of dizziness are peripheral vestibular disorders, psychiatric disorders, and pre-syncope.
''Vertigo''
* Vertigo is a symptom of vestibular dysfunction. It is a sensation of motion either of one’s surroundings or of one’s body, commonly described as a spinning or tilting sensation.
* Vestibular: BPH, TIA, Ménière’s disease, vestibular neuronitis/labyrinthitis; get ENT eval
* Nonvestibular: postural hypotension, vasovagal reactions, and cardiac arrhythmias: get ECG
* Chronic continuous dizziness: Psychiatric
* Dizziness with position change: BPV
* Hearing loss and tinnitus: Ménière’s disease
* Any FND?
* Post-traumatic vertigo?
* Any, vertebrobasilar circulation insufficiency, Cerebellar ischemia, tumors? Pt needs imaging
''Pre-syncope''
* A sensation of an impending faint, often described as “nearly fainting.” No loss of consciousness. Typically <1 min
# Vasovagal reaction. Common in young patients and usually preceded by diaphoresis, pallor, and nausea. Frequently provoked by stressful, painful, or other noxious stimuli (ie, venipuncture).
# Orthostatic hypotension. Hypovolemia, medications, or autonomic insufficiency.
# Cardiac disease. Arrhythmias, valvular disease, atrial myxoma, cardiac ischemia, tamponade. Get ECG
# Metabolic. Hypoxia, hypoglycemia, hyponatremia, hypokalemia, hypocalcemia. Get KFT, RBS
''Disequilibrium''
* A sense of imbalance with ambulation, typically not occurring at rest.
# Multisensory deficit disorder.
# Altered visual input.
# Cerebellar disease
# Parkinson’s disease
# Medications
''Lightheadedness''
* Dizziness that is difficult to define and not otherwise classifiable. The description given by the patient is often vague.
# Psychiatric.
# Hyperventilation.
* If there is nystagmus then it is vertigo
* Hallpike-Dix maneuver for vertigo.
* A +ve Romberg test: disequilibrium.
* Get CBC, KFT, TSH, ECG, MRI better than CT
''Drugs for Vertigo''
* Cinnarizine (Stugeron), 12.5–25 mg Q 6 hr
* Dimenhydrinate (Gravol), 50 mg Q 6 hr
* Diphenhydramine (Benadryl), 25–50 mg Q 6 hr.
* Prochlorperazine (Stemetil), 5-10 mg q6h
* Promethazine (Phenergan),25-50 mg q6h
* Diazepam (Valium), 2–10 mg PO/IM/IV Q 6 hr.
''Disequilibrium''
# Treat any underlying treatable disorders.
# Correct vision if indicated.
# Advise to use a cane or walker when indicated.
# Consider physical therapy.
# Assess environmental risks. Prevent falls by eliminating hazards in the environment.
# Avoid sedating medications.
''Lightheadedness''
# Treat any underlying psychiatric disorder (ie, give anxiolytics or antidepressants).
# Supportive psychotherapy.
# Teach relaxation techniques.
# Teach breathing techniques to relieve symptoms.
<div id="body_content">
Diabetic ketoacidosis (DKA) may be a complication existing type 1 diabetes mellitus or be the first presentation, accounting for around 6% of cases. Rarely, under conditions of extreme stress, patients with <span class="concept" data-cid="5494">type 2 diabetes mellitus</span> may also develop DKA.<br><br>Whilst DKA remains a serious condition mortality rates have decreased from 8% to under 1% in the past 20 years.<br><br>Pathophysiology<br><ul><li><span class="concept" data-cid="7735">DKA is caused by uncontrolled lipolysis (not proteolysis) which results in an excess of free fatty acids that are ultimately converted to ketone bodies</span></li></ul><br>The most common precipitating factors of DKA are infection, missed insulin doses and <span class="concept" data-cid="3699">myocardial infarction</span>.<br><br>Features<br><ul><li><span class="concept" data-cid="5413">abdominal pain</span></li><li>polyuria, polydipsia, dehydration</li><li>Kussmaul respiration (deep hyperventilation)</li><li>Acetone-smelling breath ('pear drops' smell)</li></ul><br><b>Diagnostic criteria</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>American Diabetes Association (2009)</th><th>Joint British Diabetes Societies (2013)</th></tr></thead><tbody><tr><td>Key points<br><ul><li>glucose > 13.8 mmol/l</li><li>pH < 7.30</li><li>serum bicarbonate <18 mmol/l</li><li>anion gap > 10</li><li>ketonaemia</li></ul></td><td>Key points<br><ul><li>glucose > 11 mmol/l or known diabetes mellitus</li><li>pH < 7.3</li><li>bicarbonate < 15 mmol/l</li><li><span class="concept" data-cid="5493">ketones > 3 mmol/l</span> or urine ketones ++ on dipstick</li></ul></td></tr></tbody></table></div><br>Management<br><ul><li>fluid replacement: most patients with DKA are deplete around 5-8 litres. Isotonic saline is used initially. Please see an example fluid regime below.</li><li>insulin: an intravenous infusion should be started at 0.1 unit/kg/hour. Once blood glucose is < 15 mmol/l an infusion of 5% dextrose should be started</li><li>correction of hypokalaemia</li><li><span class="concept" data-cid="1234">long-acting insulin should be continued, short-acting insulin should be stopped</span></li></ul><br><b>JBDS example of fluid replacement regime for patient with a systolic BP on admission 90mmHg and over</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Fluid</th><th>Volume</th></tr></thead><tbody><tr><td>0.9% sodium chloride 1L</td><td>1000ml over 1st hour</td></tr><tr><td>0.9% sodium chloride 1L with potassium chloride</td><td>1000ml over next 2 hours</td></tr><tr><td>0.9% sodium chloride 1L with potassium chloride</td><td>1000ml over next 2 hours</td></tr><tr><td>0.9% sodium chloride 1L with potassium chloride</td><td>1000ml over next 4 hours</td></tr><tr><td>0.9% sodium chloride 1L with potassium chloride</td><td>1000ml over next 4 hours</td></tr><tr><td>0.9% sodium chloride 1L with potassium chloride</td><td>1000ml over next 6 hours</td></tr></tbody></table></div><br>Please note that slower infusion may be indicated in young adults (aged 18-25 years) as they are at greater risk of cerebral oedema.<br><br><b>JBDS potassium guidelines</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th>Potassium level in first 24 hours (mmol/L)</th><th>Potassium replacement in mmol/L of infusion solution</th></tr></thead><tbody><tr><td>Over 5.5</td><td>Nil</td></tr><tr><td>3.5-5.5</td><td>40</td></tr><tr><td>Below 3.5</td><td>Senior review as additional potassium needs to be given</td></tr></tbody></table></div><br>Complications of DKA and its treatment<br><ul><li>gastric stasis</li><li>thromboembolism</li><li>arrhythmias secondary to hyperkalaemia/iatrogenic hypokalaemia</li><li>iatrogenic due to incorrect fluid therapy: <span class="concept" data-cid="1290">cerebral oedema</span>*, hypokalaemia, hypoglycaemia</li><li>acute respiratory distress syndrome</li><li>acute kidney injury</li></ul><br>* <span class="concept" data-cid="1290">children/young adults are particularly vulnerable to cerebral oedema</span> following fluid resuscitation in DKA and often need 1:1 nursing to monitor neuro-observations, headache, irritability, visual disturbance, focal neurology etc. It usually occurs 4-12 hours following commencement of treatment but can present at any time. If there is any suspicion a CT head and senior review should be sought</div>
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
!!!<center>''DKA/HHS PROTOCOL''</center>
<hr>
||!DKA|<|<|!HHS|
||Mild|Moderate|Severe||
|!Glucose|>250|>250|>250|>600|
|!pH|7.25-7.30|7.00-7.24|<7.00|>7.30|
|!Bicarb|15 to 18|10 to <15|<10|>18|
|!Urine Ketones|Positive|Positive|Positive|Small|
|!Anion Gap|>10|>12|>12|Variable|
|!GCS|Alert|Alert/ drowsy|Stupor/ coma|Stupor/coma|
* Get urine ketones and ABG
* Labs: RBS with Glucometer STAT, every hour, KFT, CBC, HbA1C, Amylase/Lipase, urinalysis with Urine culture, Magnesium, LFTs, ECG, CXR
* NPO
* Stabilize ABC first
* R/O pneumonia or UTI or MI
* FLUID MANAGEMENT (NS/RL) FIRST
* Average fluid loss :3-6 L in DKA, upto 8-10 L in HHS
* Inj NS 500 cc bolus; recheck vital and repeat bolus upto 2 Lt
* Then reassess and give more fluids, in the absence of cardiac compromise
* Switch to 0.45 NS if hypernatremia exists.
* Insulin should be started about an hour after IV fluid replacement is started.
* Don't start insulin if K<3.3
* Add 50U Regular Insulin 50ml NS to make a concentration of 1 Units/ml
* Standard: Start at Regular insulin infusion at 0.1 unit/kg/hour OR
* Start at Glucose (mg/dl)/100 ( Ex : Glucose=350 start 3.5 units /h)
* Inj Monocef 1 gm IV q12h
* Inj Pip-taz 4.5 IV q8h
* K and bicarb q6h
* If Serum Glucose does not fall by 50 -70 mg/dl in the next hour: double insulin infusion every hour until Glucose Falls by 50-70 mg/dl
* When the serum glucose reaches 200 mg/dl in DKA or 250 to 300 mg/dl in HHS then change fluids to 0.45DNS or DNS with ½ amp Kcl in each 500 cc ,and decrease the insulin infusion rate to 0.02 to 0.05 U/kg/hr
* Persistent anion gap: Continue drip
* Resolution of anion gap: Change to SC insulin (overlap IV w/ SC by 1–2 h)
* →When glucose ≤200 mg/dL in DKA & ≤300 mg/dL in HHS, reduce insulin infusion to 0.02–0.05 U/kg/h IV,
* Patients with known diabetes who were previously treated with insulin may be given insulin at the dose they were receiving before the onset of DKA or HHS
* In insulin naive patients a multi dose insulin regimen should be started at a dose of 0.5-0.8 U/kg per day, including bolus and basal insulin until an optimal dose is established.
* If K>6mEq/L,no K; if K 4.5-6 mEq/L give 10 mEq/h of kcl. 3-4.5mEq/L give 20 mEq/h of kcl.
* If patient can tolerate PO encourage consistent carbohydrate diet.
* Urine output should be >30 mL/hour before starting K+ replacement
* If pH is between 6.90-7.00 give 50 meq of Sodium bicarbonate plus 10 meq Kcl in 200 mL of sterile water for over 2 hours.
* If pH is <6.90,give 100 meq of Sodium bicarb plus 20 meq of kcl in 400 mL sterile water over 2 hours.
* Mg and Phosphate replacement if needed
* Cerebral edema: Headache, lethargy, decreased arousal, seizures, incontinence, pupillary changes, bradycardia and respiratory arrest.
* Inj Mannitol(0.25-1.0 g/kg) IV STAT
* Inj 3% NS (5-10 mL/kg over 30 min) IV STAT
<hr><center>''DOBUTAMINE''</center><hr>
<center>''Adult Dosage''<hr>
2.5-20 mcg/kg/minute; maximum: 40 mcg/kg/minute
</center>
<center>
|!ADULT: Dobutamine 500 mg (2 amp) in 50 ml NS (Rate at ml/hr)|<|<|<|<|<|<|<|<|<|<|<|<|
|!mcg/kg/min|!2.5|!5|!7.5|!10|!12.5|!15|!17.5|!20|!22.5|!25|!27.5|!30|
|!50 kg| 1 | 2 | 2 | 3 | 4 | 5 | 5 | 6 | 7 | 8 | 8 | 9 |
|!55 kg| 1 | 2 | 2 | 3 | 4 | 5 | 6 | 7 | 7 | 8 | 9 | 10 |
|!60 kg| 1 | 2 | 3 | 4 | 5 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|!65 kg| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|!70 kg| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 |
|!75 kg| 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 |
|!80 kg| 1 | 2 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 |
|!85 kg| 1 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 13 | 14 | 15 |
|!90 kg| 1 | 3 | 4 | 5 | 7 | 8 | 9 | 11 | 12 | 14 | 15 | 16 |
|!95 kg| 1 | 3 | 4 | 6 | 7 | 9 | 10 | 11 | 13 | 14 | 16 | 17 |
|!100 kg| 2 | 3 | 5 | 6 | 8 | 9 | 11 | 12 | 14 | 15 | 17 | 18 |
</center>
<hr><center>''Pediatric Dosage''<hr>
2.5-20 mcg/kg/minute; maximum: 40 mcg/kg/minute</center>
<center>
|!PEDS: Dobutamine 250 mg (1 amp) in 50 ml NS (Rate at ml/hr)|<|<|<|<|<|<|<|<|<|<|<|<|
|!mcg/kg/min|!2.5|!5|!7.5|!10|!12.5|!15|!17.5|!20|!22.5|!25|!27.5|!30|
|!5 kg| 0.2 | 0.3 | 0.5 | 0.6 | 0.8 | 0.9 | 1.1 | 1.2 | 1.4 | 1.5 | 1.7 | 1.8 |
|!6 kg| 0.2 | 0.4 | 0.5 | 0.7 | 0.9 | 1.1 | 1.3 | 1.4 | 1.6 | 1.8 | 2.0 | 2.2 |
|!7 kg| 0.2 | 0.4 | 0.6 | 0.8 | 1.1 | 1.3 | 1.5 | 1.7 | 1.9 | 2.1 | 2.3 | 2.5 |
|!8 kg| 0.2 | 0.5 | 0.7 | 1.0 | 1.2 | 1.4 | 1.7 | 1.9 | 2.2 | 2.4 | 2.6 | 2.9 |
|!9 kg| 0.3 | 0.5 | 0.8 | 1.1 | 1.4 | 1.6 | 1.9 | 2.2 | 2.4 | 2.7 | 3.0 | 3.2 |
|!10 kg| 0.3 | 0.6 | 0.9 | 1.2 | 1.5 | 1.8 | 2.1 | 2.4 | 2.7 | 3.0 | 3.3 | 3.6 |
|!11 kg| 0.3 | 0.7 | 1.0 | 1.3 | 1.7 | 2.0 | 2.3 | 2.6 | 3.0 | 3.3 | 3.6 | 4.0 |
|!12 kg| 0.4 | 0.7 | 1.1 | 1.4 | 1.8 | 2.2 | 2.5 | 2.9 | 3.2 | 3.6 | 4.0 | 4.3 |
|!13 kg| 0.4 | 0.8 | 1.2 | 1.6 | 2.0 | 2.3 | 2.7 | 3.1 | 3.5 | 3.9 | 4.3 | 4.7 |
|!14 kg| 0.4 | 0.8 | 1.3 | 1.7 | 2.1 | 2.5 | 2.9 | 3.4 | 3.8 | 4.2 | 4.6 | 5.0 |
|!15 kg| 0.5 | 0.9 | 1.4 | 1.8 | 2.3 | 2.7 | 3.2 | 3.6 | 4.1 | 4.5 | 5.0 | 5.4 |
|!16 kg| 0.5 | 1.0 | 1.4 | 1.9 | 2.4 | 2.9 | 3.4 | 3.8 | 4.3 | 4.8 | 5.3 | 5.8 |
|!17 kg| 0.5 | 1.0 | 1.5 | 2.0 | 2.6 | 3.1 | 3.6 | 4.1 | 4.6 | 5.1 | 5.6 | 6.1 |
|!18 kg| 0.5 | 1.1 | 1.6 | 2.2 | 2.7 | 3.2 | 3.8 | 4.3 | 4.9 | 5.4 | 5.9 | 6.5 |
|!19 kg| 0.6 | 1.1 | 1.7 | 2.3 | 2.9 | 3.4 | 4.0 | 4.6 | 5.1 | 5.7 | 6.3 | 6.8 |
|!20 kg| 0.6 | 1.2 | 1.8 | 2.4 | 3.0 | 3.6 | 4.2 | 4.8 | 5.4 | 6.0 | 6.6 | 7.2 |
|!21 kg| 0.6 | 1.3 | 1.9 | 2.5 | 3.2 | 3.8 | 4.4 | 5.0 | 5.7 | 6.3 | 6.9 | 7.6 |
|!22 kg| 0.7 | 1.3 | 2.0 | 2.6 | 3.3 | 4.0 | 4.6 | 5.3 | 5.9 | 6.6 | 7.3 | 7.9 |
|!23 kg| 0.7 | 1.4 | 2.1 | 2.8 | 3.5 | 4.1 | 4.8 | 5.5 | 6.2 | 6.9 | 7.6 | 8.3 |
|!24 kg| 0.7 | 1.4 | 2.2 | 2.9 | 3.6 | 4.3 | 5.0 | 5.8 | 6.5 | 7.2 | 7.9 | 8.6 |
|!25 kg| 0.8 | 1.5 | 2.3 | 3.0 | 3.8 | 4.5 | 5.3 | 6.0 | 6.8 | 7.5 | 8.3 | 9.0 |
|!26 kg| 0.8 | 1.6 | 2.3 | 3.1 | 3.9 | 4.7 | 5.5 | 6.2 | 7.0 | 7.8 | 8.6 | 9.4 |
|!27 kg| 0.8 | 1.6 | 2.4 | 3.2 | 4.1 | 4.9 | 5.7 | 6.5 | 7.3 | 8.1 | 8.9 | 9.7 |
|!28 kg| 0.8 | 1.7 | 2.5 | 3.4 | 4.2 | 5.0 | 5.9 | 6.7 | 7.6 | 8.4 | 9.2 | 10.1 |
|!29 kg| 0.9 | 1.7 | 2.6 | 3.5 | 4.4 | 5.2 | 6.1 | 7.0 | 7.8 | 8.7 | 9.6 | 10.4 |
|!30 kg| 0.9 | 1.8 | 2.7 | 3.6 | 4.5 | 5.4 | 6.3 | 7.2 | 8.1 | 9.0 | 9.9 | 10.8 |
|!31 kg| 0.9 | 1.9 | 2.8 | 3.7 | 4.7 | 5.6 | 6.5 | 7.4 | 8.4 | 9.3 | 10.2 | 11.2 |
|!32 kg| 1.0 | 1.9 | 2.9 | 3.8 | 4.8 | 5.8 | 6.7 | 7.7 | 8.6 | 9.6 | 10.6 | 11.5 |
|!33 kg| 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 5.9 | 6.9 | 7.9 | 8.9 | 9.9 | 10.9 | 11.9 |
|!34 kg| 1.0 | 2.0 | 3.1 | 4.1 | 5.1 | 6.1 | 7.1 | 8.2 | 9.2 | 10.2 | 11.2 | 12.2 |
|!35 kg| 1.1 | 2.1 | 3.2 | 4.2 | 5.3 | 6.3 | 7.4 | 8.4 | 9.5 | 10.5 | 11.6 | 12.6 |
|!36 kg| 1.1 | 2.2 | 3.2 | 4.3 | 5.4 | 6.5 | 7.6 | 8.6 | 9.7 | 10.8 | 11.9 | 13.0 |
|!37 kg| 1.1 | 2.2 | 3.3 | 4.4 | 5.6 | 6.7 | 7.8 | 8.9 | 10.0 | 11.1 | 12.2 | 13.3 |
|!38 kg| 1.1 | 2.3 | 3.4 | 4.6 | 5.7 | 6.8 | 8.0 | 9.1 | 10.3 | 11.4 | 12.5 | 13.7 |
|!39 kg| 1.2 | 2.3 | 3.5 | 4.7 | 5.9 | 7.0 | 8.2 | 9.4 | 10.5 | 11.7 | 12.9 | 14.0 |
|!40 kg| 1.2 | 2.4 | 3.6 | 4.8 | 6.0 | 7.2 | 8.4 | 9.6 | 10.8 | 12.0 | 13.2 | 14.4 |
|!41 kg| 1.2 | 2.5 | 3.7 | 4.9 | 6.2 | 7.4 | 8.6 | 9.8 | 11.1 | 12.3 | 13.5 | 14.8 |
|!42 kg| 1.3 | 2.5 | 3.8 | 5.0 | 6.3 | 7.6 | 8.8 | 10.1 | 11.3 | 12.6 | 13.9 | 15.1 |
|!43 kg| 1.3 | 2.6 | 3.9 | 5.2 | 6.5 | 7.7 | 9.0 | 10.3 | 11.6 | 12.9 | 14.2 | 15.5 |
|!44 kg| 1.3 | 2.6 | 4.0 | 5.3 | 6.6 | 7.9 | 9.2 | 10.6 | 11.9 | 13.2 | 14.5 | 15.8 |
|!45 kg| 1.4 | 2.7 | 4.1 | 5.4 | 6.8 | 8.1 | 9.5 | 10.8 | 12.2 | 13.5 | 14.9 | 16.2 |
|!46 kg| 1.4 | 2.8 | 4.1 | 5.5 | 6.9 | 8.3 | 9.7 | 11.0 | 12.4 | 13.8 | 15.2 | 16.6 |
|!47 kg| 1.4 | 2.8 | 4.2 | 5.6 | 7.1 | 8.5 | 9.9 | 11.3 | 12.7 | 14.1 | 15.5 | 16.9 |
|!48 kg| 1.4 | 2.9 | 4.3 | 5.8 | 7.2 | 8.6 | 10.1 | 11.5 | 13.0 | 14.4 | 15.8 | 17.3 |
|!49 kg| 1.5 | 2.9 | 4.4 | 5.9 | 7.4 | 8.8 | 10.3 | 11.8 | 13.2 | 14.7 | 16.2 | 17.6 |
|!50 kg| 1.5 | 3.0 | 4.5 | 6.0 | 7.5 | 9.0 | 10.5 | 12.0 | 13.5 | 15.0 | 16.5 | 18.0 |
</center>
<hr><center>''DOPAMINE''</center><hr>
<center>''Adult Dosage''</center><hr>
''Low-dose:''
* 1-5 mcg/kg/minute, increased renal blood flow and urine output
''Intermediate-dose:''
* 5-15 mcg/kg/minute, increased renal blood flow, heart rate, cardiac contractility, and cardiac output.
''High-dose:''
* >15 mcg/kg/minute, alpha-adrenergic effects begin to predominate, vasoconstriction, increased blood pressure
<center>
|!ADULT: Dopamine 400 mg (2 amp) in 50 ml NS (Rate at ml/hr)|<|<|<|<|<|<|<|<|<|<|<|<|
|!mcg/kg/min|!2.5|!5|!7.5|!10|!12.5|!15|!17.5|!20|!22.5|!25|!27.5|!30|
|! 50 kg| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 8 | 9 | 10 | 11 |
|! 55 kg| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|! 60 kg| 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 |
|! 65 kg| 1 | 2 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 15 |
|! 70 kg| 1 | 3 | 4 | 5 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 16 |
|! 75 kg| 1 | 3 | 4 | 6 | 7 | 8 | 10 | 11 | 13 | 14 | 15 | 17 |
|! 80 kg| 2 | 3 | 5 | 6 | 8 | 9 | 11 | 12 | 14 | 15 | 17 | 18 |
|! 85 kg| 2 | 3 | 5 | 6 | 8 | 10 | 11 | 13 | 14 | 16 | 18 | 19 |
|! 90 kg| 2 | 3 | 5 | 7 | 8 | 10 | 12 | 14 | 15 | 17 | 19 | 20 |
|! 95 kg| 2 | 4 | 5 | 7 | 9 | 11 | 12 | 14 | 16 | 18 | 20 | 21 |
|! 100 kg| 2 | 4 | 6 | 8 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 |
</center>
<hr><center>''Pediatric Dosage''</center><hr>
''Low-dose:''
* 1-5 mcg/kg/minute, increased renal blood flow and urine output
''Intermediate-dose:''
* 5-15 mcg/kg/minute, increased renal blood flow, heart rate, cardiac contractility, and cardiac output.
''High-dose:''
* >15 mcg/kg/minute, alpha-adrenergic effects begin to predominate, vasoconstriction, increased blood pressure
<center>
|!PEDS: Dopamine 200 mg (1 amp) in 50 ml NS (Rate at ml/hr)|<|<|<|<|<|<|<|<|<|<|<|<|
|!mcg/kg/min|!2.5|!5|!7.5|!10|!12.5|!15|!17.5|!20|!22.5|!25|!27.5|!30|
|!5 kg| 0.2 | 0.4 | 0.6 | 0.8 | 0.9 | 1.1 | 1.3 | 1.5 | 1.7 | 1.9 | 2.1 | 2.3 |
|!6 kg| 0.2 | 0.5 | 0.7 | 0.9 | 1.1 | 1.4 | 1.6 | 1.8 | 2.0 | 2.3 | 2.5 | 2.7 |
|!7 kg| 0.3 | 0.5 | 0.8 | 1.1 | 1.3 | 1.6 | 1.8 | 2.1 | 2.4 | 2.6 | 2.9 | 3.2 |
|!8 kg| 0.3 | 0.6 | 0.9 | 1.2 | 1.5 | 1.8 | 2.1 | 2.4 | 2.7 | 3.0 | 3.3 | 3.6 |
|!9 kg| 0.3 | 0.7 | 1.0 | 1.4 | 1.7 | 2.0 | 2.4 | 2.7 | 3.0 | 3.4 | 3.7 | 4.1 |
|!10 kg| 0.4 | 0.8 | 1.1 | 1.5 | 1.9 | 2.3 | 2.6 | 3.0 | 3.4 | 3.8 | 4.1 | 4.5 |
|!11 kg| 0.4 | 0.8 | 1.2 | 1.7 | 2.1 | 2.5 | 2.9 | 3.3 | 3.7 | 4.1 | 4.5 | 5.0 |
|!12 kg| 0.5 | 0.9 | 1.4 | 1.8 | 2.3 | 2.7 | 3.2 | 3.6 | 4.1 | 4.5 | 5.0 | 5.4 |
|!13 kg| 0.5 | 1.0 | 1.5 | 2.0 | 2.4 | 2.9 | 3.4 | 3.9 | 4.4 | 4.9 | 5.4 | 5.9 |
|!14 kg| 0.5 | 1.1 | 1.6 | 2.1 | 2.6 | 3.2 | 3.7 | 4.2 | 4.7 | 5.3 | 5.8 | 6.3 |
|!15 kg| 0.6 | 1.1 | 1.7 | 2.3 | 2.8 | 3.4 | 3.9 | 4.5 | 5.1 | 5.6 | 6.2 | 6.8 |
|!16 kg| 0.6 | 1.2 | 1.8 | 2.4 | 3.0 | 3.6 | 4.2 | 4.8 | 5.4 | 6.0 | 6.6 | 7.2 |
|!17 kg| 0.6 | 1.3 | 1.9 | 2.6 | 3.2 | 3.8 | 4.5 | 5.1 | 5.7 | 6.4 | 7.0 | 7.7 |
|!18 kg| 0.7 | 1.4 | 2.0 | 2.7 | 3.4 | 4.1 | 4.7 | 5.4 | 6.1 | 6.8 | 7.4 | 8.1 |
|!19 kg| 0.7 | 1.4 | 2.1 | 2.9 | 3.6 | 4.3 | 5.0 | 5.7 | 6.4 | 7.1 | 7.8 | 8.6 |
|!20 kg| 0.8 | 1.5 | 2.3 | 3.0 | 3.8 | 4.5 | 5.3 | 6.0 | 6.8 | 7.5 | 8.3 | 9.0 |
|!21 kg| 0.8 | 1.6 | 2.4 | 3.2 | 3.9 | 4.7 | 5.5 | 6.3 | 7.1 | 7.9 | 8.7 | 9.5 |
|!22 kg| 0.8 | 1.7 | 2.5 | 3.3 | 4.1 | 5.0 | 5.8 | 6.6 | 7.4 | 8.3 | 9.1 | 9.9 |
|!23 kg| 0.9 | 1.7 | 2.6 | 3.5 | 4.3 | 5.2 | 6.0 | 6.9 | 7.8 | 8.6 | 9.5 | 10.4 |
|!24 kg| 0.9 | 1.8 | 2.7 | 3.6 | 4.5 | 5.4 | 6.3 | 7.2 | 8.1 | 9.0 | 9.9 | 10.8 |
|!25 kg| 0.9 | 1.9 | 2.8 | 3.8 | 4.7 | 5.6 | 6.6 | 7.5 | 8.4 | 9.4 | 10.3 | 11.3 |
|!26 kg| 1.0 | 2.0 | 2.9 | 3.9 | 4.9 | 5.9 | 6.8 | 7.8 | 8.8 | 9.8 | 10.7 | 11.7 |
|!27 kg| 1.0 | 2.0 | 3.0 | 4.1 | 5.1 | 6.1 | 7.1 | 8.1 | 9.1 | 10.1 | 11.1 | 12.2 |
|!28 kg| 1.1 | 2.1 | 3.2 | 4.2 | 5.3 | 6.3 | 7.4 | 8.4 | 9.5 | 10.5 | 11.6 | 12.6 |
|!29 kg| 1.1 | 2.2 | 3.3 | 4.4 | 5.4 | 6.5 | 7.6 | 8.7 | 9.8 | 10.9 | 12.0 | 13.1 |
|!30 kg| 1.1 | 2.3 | 3.4 | 4.5 | 5.6 | 6.8 | 7.9 | 9.0 | 10.1 | 11.3 | 12.4 | 13.5 |
|!31 kg| 1.2 | 2.3 | 3.5 | 4.7 | 5.8 | 7.0 | 8.1 | 9.3 | 10.5 | 11.6 | 12.8 | 14.0 |
|!32 kg| 1.2 | 2.4 | 3.6 | 4.8 | 6.0 | 7.2 | 8.4 | 9.6 | 10.8 | 12.0 | 13.2 | 14.4 |
|!33 kg| 1.2 | 2.5 | 3.7 | 5.0 | 6.2 | 7.4 | 8.7 | 9.9 | 11.1 | 12.4 | 13.6 | 14.9 |
|!34 kg| 1.3 | 2.6 | 3.8 | 5.1 | 6.4 | 7.7 | 8.9 | 10.2 | 11.5 | 12.8 | 14.0 | 15.3 |
|!35 kg| 1.3 | 2.6 | 3.9 | 5.3 | 6.6 | 7.9 | 9.2 | 10.5 | 11.8 | 13.1 | 14.4 | 15.8 |
|!36 kg| 1.4 | 2.7 | 4.1 | 5.4 | 6.8 | 8.1 | 9.5 | 10.8 | 12.2 | 13.5 | 14.9 | 16.2 |
|!37 kg| 1.4 | 2.8 | 4.2 | 5.6 | 6.9 | 8.3 | 9.7 | 11.1 | 12.5 | 13.9 | 15.3 | 16.7 |
|!38 kg| 1.4 | 2.9 | 4.3 | 5.7 | 7.1 | 8.6 | 10.0 | 11.4 | 12.8 | 14.3 | 15.7 | 17.1 |
|!39 kg| 1.5 | 2.9 | 4.4 | 5.9 | 7.3 | 8.8 | 10.2 | 11.7 | 13.2 | 14.6 | 16.1 | 17.6 |
|!40 kg| 1.5 | 3.0 | 4.5 | 6.0 | 7.5 | 9.0 | 10.5 | 12.0 | 13.5 | 15.0 | 16.5 | 18.0 |
|!41 kg| 1.5 | 3.1 | 4.6 | 6.2 | 7.7 | 9.2 | 10.8 | 12.3 | 13.8 | 15.4 | 16.9 | 18.5 |
|!42 kg| 1.6 | 3.2 | 4.7 | 6.3 | 7.9 | 9.5 | 11.0 | 12.6 | 14.2 | 15.8 | 17.3 | 18.9 |
|!43 kg| 1.6 | 3.2 | 4.8 | 6.5 | 8.1 | 9.7 | 11.3 | 12.9 | 14.5 | 16.1 | 17.7 | 19.4 |
|!44 kg| 1.7 | 3.3 | 5.0 | 6.6 | 8.3 | 9.9 | 11.6 | 13.2 | 14.9 | 16.5 | 18.2 | 19.8 |
|!45 kg| 1.7 | 3.4 | 5.1 | 6.8 | 8.4 | 10.1 | 11.8 | 13.5 | 15.2 | 16.9 | 18.6 | 20.3 |
|!46 kg| 1.7 | 3.5 | 5.2 | 6.9 | 8.6 | 10.4 | 12.1 | 13.8 | 15.5 | 17.3 | 19.0 | 20.7 |
|!47 kg| 1.8 | 3.5 | 5.3 | 7.1 | 8.8 | 10.6 | 12.3 | 14.1 | 15.9 | 17.6 | 19.4 | 21.2 |
|!48 kg| 1.8 | 3.6 | 5.4 | 7.2 | 9.0 | 10.8 | 12.6 | 14.4 | 16.2 | 18.0 | 19.8 | 21.6 |
|!49 kg| 1.8 | 3.7 | 5.5 | 7.4 | 9.2 | 11.0 | 12.9 | 14.7 | 16.5 | 18.4 | 20.2 | 22.1 |
|!50 kg| 1.9 | 3.8 | 5.6 | 7.5 | 9.4 | 11.3 | 13.1 | 15.0 | 16.9 | 18.8 | 20.6 | 22.5 |
</center>
Clinical features
* face: upslanting palpebral fissures, epicanthic folds, Brushfield spots in iris, protruding tongue, small low-set ears, round/flat face
* flat occiput
* single palmar crease, pronounced 'sandal gap' between big and first toe
* hypotonia
* congenital heart defects (40-50%, see below)
* duodenal atresia
* Hirschsprung's disease
Cardiac complications
* multiple cardiac problems may be present
* endocardial cushion defect (most common, 40%, also known as atrioventricular septal canal defects)
* ventricular septal defect (c. 30%)
* secundum atrial septal defect (c. 10%)
* tetralogy of Fallot (c. 5%)
* isolated patent ductus arteriosus (c. 5%)
Later complications
* subfertility: males are almost always infertile due to impaired spermatogenesis. Females are usually subfertile, and have an increased incidence of problems with pregnancy and labour
* learning difficulties
* short stature
* repeated respiratory infections (+hearing impairment from glue ear)
* acute lymphoblastic leukaemia
* hypothyroidism
* Alzheimer's disease
* atlantoaxial instability
---
>ALL, ALZeimers, ASD endocard, ATResia
---
>Down's Drinking age, Edwards Election age, Patau Puberty
Down's-21, Edwards-18, Patau-13
---
>AB increase, EF decrease
*inhA-Bhcg increased, Estriol, aFetoprotein decreased
---
>AFP Down Down
*AFP decreased in Down's
---
>DOWN with UP slanting eyebrows
---
Individuals with Down's syndrome are more likely to suffer from vision and hearing problems, as detailed below:
Vision
* refractive errors are more common
* strabismus: seen in around 20-40%
* cataracts: congenital and acquired are both more common
* recurrent blepharitis
* glaucoma
Hearing
otitis media and glue ear are very common resulting in hearing problems
!!!<center>''DRUG DOSES IN RENAL IMPAIRMENT''</center>
<hr>
<center>
|!DRUG|!USUAL DOSAGE|!DOSAGE ADJUSTMENT (PERCENTAGE OF USUAL DOSAGE) BASED ON GFR (ML PER MINUTE PER 1.73 M2)|<|<|
|~|~|!>50|!10 TO 50|!<10|
|!ANTIFUNGALS|<|<|<|<|
|!Fluconazole|200 to 400 mg every 24 hours| 100% | 50% | 50% |
|!Itraconazole| 100 to 200 mg every 12 hours| 100% | 100% | 50% (IV form is contraindicated) |
|!Ketoconazole| No adjustment needed |<|<|<|
|!Miconazole| No adjustment needed |<|<|<|
|!ANTIVIRALS|<|<|<|<|
|!Acyclovir IV| 5 to 10 mg per kg every 8 hours | 100% | 100% every 12 to 24 hours | 50% every 12 to 24 hours |
|!Acyclovir (oral)| 200 to 800 mg every 4 to 12 hours | 100% | 100% | 200 mg every 12 hours |
|!Valacyclovir| 500 mg q12h to 1,000 mg q8h | 100% | 100% every 12 to 24 hours | 500 mg every 24 hours |
|!CARBAPENEMS|<|<|<|<|
|!Ertapenem| 1 g every 24 hours | 100% | 100% | 50% |
|!Imipenem| 0.25 to 1 g every 6 hours | 100% | 50% | 25% |
|!Meropenem| 1 to 2 g every 8 hours | 100% | 50% every 12 hours | 50% every 24 hours (GFR < 20) |
|!Cefaclor| 250 to 500 mg every 8 hours | 100% | 50 to 100% | 50% |
|!Cefadroxil| 0.5 to 1 g every 12 hours | 100% | Every 12 to 24 hours | Every 36 hours |
|!Cefamandole|0.5 to 1 g every 4 to 8 hours | Every 6 hours | Every 6 to 8 hours | Every 8 to 12 hours |
|!Cefazolin| 0.25 to 2 g every 6 hours | Every 8 hours | Every 12 hours | 50% every 24 to 48 hours |
|!Cefepime| 0.25 to 2 g every 8 to 12 hours | 100% | 50 to 100% every 24 hours | 25 to 50% every 24 hours |
|!Cefixime| 200 mg every 12 hours | 100% | 75% | 50% |
|!Cefoperazone| No adjustment needed |<|<|<|
|!Cefotaxime| 1 to 2 g every 6 to 12 hours | Every 6 hours | Every 6 to 12 hours | Every 24 hours or 50% |
|!Cefotetan| 1 to 2 g every 12 hours | 100% | Every 24 hours | Every 48 hours |
|!Cefoxitin| 1 to 2 g every 6 to 8 hours | Every 6 to 8 hours | Every 8 to 12 hours | Every 24 to 48 hours |
|!Cefpodoxime| 100 to 400 mg every 12 hours | Every 12 hours | Every 24 hours | Every 24 hours |
|!Cefprozil| 250 to 500 mg every 12 hours | 100% | 50% every 12 hours | 50% every 12 hours |
|!Ceftazidime| 1 to 2 g every 8 hours | Every 8 to 12 hours | Every 12 to 24 hours | Every 24 to 48 hours |
|!Ceftibuten| 400 mg every 24 hours | 100% | 25 to 50% | 25 to 50% |
|!Ceftizoxime| 1 to 2 g every 8 to 12 hours | Every 8 to 12 hours | Every 12 to 24 hours | Every 24 hours |
|!Ceftriaxone| No adjustment needed |<|<|<|
|!Cefuroxime axetil| No adjustment needed |<|<|<|
|!Cefuroxime sodium| 0.75 to 1.5 g every 8 hours | Every 8 hours | Every 8 to 12 hours | Every 12 hours |
|!Cephalexin| 250 to 500 mg every 6 to 8 hours | Every 8 hours | Every 8 to 12 hours | Every 12 to 24 hours |
|!Cephradine| 0.25 to 1 g every 6 to 12 hours | 100% | 50% | 25% |
|!MACROLIDES|<|<|<|<|
|!Azithromycin| No adjustment needed |<|<|<|
|!Clarithromycin| 250 to 500 mg every 12 hours or <br>1 g daily (SR)| 100% | 50 to 100% | 50% |
|!Dirithromycin| No adjustment needed |<|<|<|
|!Erythromycin| No adjustment needed |<|<|<|
|!PENICILLINS|<|<|<|<|
|!Amoxicillin| 250 to 500 mg every 8 hours | Every 8 hours | Every 8 to 12 hours | Every 24 hours |
|!Ampicillin| 0.25 to 2 g every 6 hours | Every 6 hours | Every 6 to 12 hours | Every 12 to 24 hours |
|!Ampicillin/sulbactam| 1 to 2 g ampicillin and 0.5 to 1 g sulbactam every 6 to 8 hours | 100% (GFR ≥ 30) | Every 12 hours (GFR 15 to 29) | Every 24 hours (GFR 5 to 14) |
|!Carbenicillin| 382-mg tablet 1 or 2 tablets every 6 hours | Every 6 to 12 hours | Every 12 to 24 hours | Every 24 to 48 hours |
|!Carbenicillin| IV 200 to 500 mg per kg per day, continuous infusion or in divided doses | Every 8 to 12 hours | Every 12 to 24 hours | Every 24 to 48 hours |
|!Dicloxacillin| No adjustment needed |<|<|<|
|!Nafcillin| No adjustment needed |<|<|<|
|!Penicillin G| 0.5 to 4 million U every 4 to 6 hours | 100% | 75% | 20 to 50% |
|!Penicillin VK| No adjustment needed |<|<|<|
|!Piperacillin| 3 to 4 g every 6 hours | Every 6 hours | Every 6 to 12 hours | Every 12 hours |
|!Piperacillin/tazobactam| 3.375 to 4.5 g every 6 to 8 hours | 100% | 2.25gm every 6 to 8hrs | 2.25 g every 8 hours |
|!Ticarcillin| 3 g every 4 hours | 1 to 2 g every 4 hours | 1 to 2 g every 8 hours | 1 to 2 g every 12 hours |
|!Ticarcillin/clavulanate| 3.1 g every 4 hours | 100% | Every 8 to 12 hours | 2 g every 12 hours |
|!QUINOLONES|<|<|<|<|
|!Ciprofloxacin| 400 mg IV or 500 to 750 mg orally every 12 hours | 100% | 50 to 75% | 50% |
|!Gatifloxacin| 400 mg every 24 hours | 100% | 400 mg initially, then 200 mg daily | 400 mg initially, then 200 mg daily |
|!Gemifloxacin| 320 mg every 24 hours | 100% | 50 to 100% | 50% |
|!Levofloxacin| 250 to 750 mg every 24 hours | 100% | 500 to 750 mg initial dose, then 250 to 750 mg every 24 to 48 hours | 500 mg initial dose, then 250 to 500 mg every 48 hours |
|!Moxifloxacin| No adjustment needed |<|<|<|
|!Norfloxacin| 400 mg every 12 hours | Every 12 hours | Every 12 to 24 hours | Avoid |
|!Ofloxacin| 200 to 400 mg every 12 hours | 100% | 200 to 400 mg every 24 hours | 200 mg every 24 hours |
|!Trovafloxacin| No adjustment needed |<|<|<|
|!SULFONAMIDES|<|<|<|<|
|!Sulfamethoxazole| 1 g every 8 to 12 hours | Every 12 hours | Every 18 hours | Every 24 hours |
|!Sulfisoxazole| 1 to 2 g every 6 hours | Every 6 hours | Every 8 to 12 hours | Every 12 to 24 hours |
|!Trimethoprim| 100 mg every 12 hours | Every 12 hours | Every 12 hours (GFR > 30); every 18 hours (GFR 10 to 30) | Every 24 hours |
|!TETRACYCLINES|<|<|<|<|
|!Doxycycline| No adjustment needed |<|<|<|
|!Tetracycline| 250 to 500 mg two to four times daily | Every 8 to 12 hours | Every 12 to 24 hours | Every 24 hours |
|!OTHER|<|<|<|<|
|!Chloramphenicol| No adjustment needed |<|<|<|
|!Clindamycin| No adjustment needed |<|<|<|
|!Dalfopristin/quinupristin (Synercid)| No adjustment needed |<|<|<|
|!Linezolid| No adjustment needed |<|<|<|
|!Nitrofurantoin| 500 to 1,000 mg every 6 hours | 100% | Avoid | Avoid |
|!Vancomycin| Avoid |<|<|<|
|!Telithromycin| No adjustment needed |<|<|<|
|!Aminoglycosides| should be avoided in patients with chronic kidney disease when possible |<|<|<|
|!ANTIHYPERTENSIVES: ACE INHIBITORS|<|<|<|<|
|!Benazepril| 10 mg daily | 100% | 50 to 75% | 25 to 50% |
|!Captopril| 25 mg every 8 hours | 100% | 75% | 50% |
|!Enalapril| 5 to 10 mg every 12 hours | 100% | 75 to 100% | 50% |
|!Fosinopril| 10 mg daily | 100% | 100% | 75 to 100% |
|!Lisinopril| 5 to 10 mg daily | 100% | 50 to 75% | 25 to 50% |
|!Quinapril| 10 to 20 mg daily | 100% | 75 to 100% | 75% |
|!Ramipril| 5 to 10 mg daily | 100% | 50 to 75% | 25 to 50% |
|!BETABLOCKERS|<|<|<|<|
|!Acebutolol| 400 to 600 mg once or twice daily | 100% | 50% | 30 to 50% |
|!Atenolol| 5 to 100 mg daily | 100% | 50% | 25% |
|!Bisoprolol| 10 mg daily | 100% | 75% | 50% |
|!Nadolol| 40 to 80 mg daily | 100% | 50% | 25% |
|!DIURETICS|<|<|<|<|
|!Amiloride| 5 mg daily | 100% | 50% | Avoid |
|!Bumetanide| No adjustment needed |<|<|<|
|!Furosemide| No adjustment needed |<|<|<|
|!Metolazone| No adjustment needed |<|<|<|
|!Spironolactone| 50 to 100 mg daily | Every 6 to 12 hours | Every 12 to 24 hours | Avoid |
|!Thiazides| 25 to 50 mg daily | 100% | 100% | Avoid |
|!Torsemide| No adjustment needed |<|<|<|
|!Triamterene| 50 to 100 twice daily | 100% | 100% | Avoid |
|!HYPOGLYCEMIC AGENTS|<|<|<|<|
|!Acarbose| Maximum: 50 to 100 mg three times daily | should be avoided in the patients with a serum creatinine level higher than 2 mg per dL (180 μmol per L) |<|<|
|!Chlorpropamide| 100 to 500 mg daily | Avoid in patients with a glomerular filtration rate less than 50 mL per minute because of the increased risk of hypoglycemia |<|<|
|!Glipizide| 5 mg daily | No adjustment needed |<|<|
|!Glyburide| 2.5 to 5 mg daily | 50 percent of the active metabolite is excreted via the kidney, creating a potential for severe hypoglycemia; not recommended when creatinine clearance is less than 50 mL per minute |<|<|
|!Metformin| 500 mg twice daily | Avoid if serum creatinine level is higher than 1.5 mg per dL (130 μmol per L) in men or higher than 1.4 mg per dL (120 μmol per L) in women, and in patients older than 80 years or with chronic heart failure |<|<|
|!ANALGESICS|<|<|<|<|
|Morphine, Tramadol, and Codeine are not recommended in patients with stage 4 or 5 disease<br>A 50 to 75 percent dose reduction for morphine and codeine is recommended in patients with a creatinine clearance less than 50 mL per minute (0.83 mL per second)<br>Extended-release tramadol should be avoided in patients with chronic kidney disease <br>The dosing interval of tramadol (regular release) may need to be increased to every 12 hours in patients with a creatinine clearance less than 30 mL per minute (0.5 mL per second) <br>Acetaminophen can be used safely in patients with renal impairment|<|<|<|<|
|!NSAIDS|<|<|<|<|
|Adverse renal effects of NSAIDs include acute renal failure; nephrotic syndrome with interstitial nephritis; and chronic renal failure with or without glomerulopathy, interstitial nephritis, and papillary necrosis<br>The risk of acute renal failure is three times higher in NSAID users than in non-NSAID users.<br>Other adverse effects of NSAIDs include decreased potassium excretion, which can cause hyperkalemia, and decreased sodium excretion, which can cause peripheral edema, elevated blood pressure, and decompensation of heart failure. NSAIDs can blunt antihypertensive treatment, especially if beta blockers, ACE inhibitors, or ARBs are used.<br>Although selective COX-2 inhibitors may cause slightly fewer adverse gastrointestinal effects, adverse renal effects are similar to traditional NSAIDs.<br>Short-term use of NSAIDs is generally safe in patients who are well hydrated; who have good renal function; and who do not have heart failure, diabetes, or hypertension.<br>Long-term use and high daily dosages of COX-2 inhibitors and other NSAIDs should be avoided if possible. <br>Patients at high risk of NSAID-induced kidney disease should receive serum creatinine measurements every two to four weeks for several weeks after initiation of therapy because renal insufficiency may occur early in the course of therapy.|<|<|<|<|
|!STATINS|<|<|<|<|
|!Atorvastatin| 10 mg daily Maximal dosage: 80 mg daily | No adjustment needed |<|<|
|!Fluvastatin| 20 to 80 mg daily 80 mg daily (sustained release) | 50% dose reduction in patients with a GFR less than 30 mL per minute per 1.73 m2 |<|<|
|!Lovastatin| 20 to 40 mg daily Maximal dosage: 80 mg daily (immediate release) or 60 mg daily (extended release) | Use with caution in patients with a GFR less than 30 mL per minute per 1.73 m2 |<|<|
|!Pravastatin| 10 to 20 mg daily Maximal dosage: 40 mg daily Starting dosage should not exceed 10 mg daily in patients with a GFR less than 30 mL per minute per 1.73 m2 |<|<|<|
|!Rosuvastatin|5 to 40 mg daily | Recommended starting dosage is 5 mg daily in patients with a GFR less than 30 mL per minute per 1.73 m2 not to exceed 10 mg daily |<|<|
|!Simvastatin| 10 to 20 mg daily Maximal dosage: 80 mg daily | Recommended starting dosage is 5 mg daily in persons with a GFR less than 10 mL per minute per 1.73 m2 |<|<|
|!OTHER COMMON AGENTS|<|<|<|<|
|!Allopurinol| 300 mg daily | 75% | 50% | 25% |
|!Esomeprazole| No adjustment needed |<|<|<|
|!Famotidine| 20 to 40 mg at bedtime | 50% | 25% | 10% |
|!Gabapentin| 300 to 600 mg three times daily | 900 to 3,600 mg three times daily (GFR= 60) | 400 to 1,400 mg twice daily (GFR > 30 to 59) | 200 to 700 mg daily (GFR > 15 to 29) <br> 100 to 300 mg daily (GFR=15) |
|!Lansoprazole| No adjustment needed |<|<|<|
|!Metoclopramide| 10 to 15 mg three times daily | 100% | 75% | 50% |
|!Omeprazole| No adjustment needed |<|<|<|
|!Ranitidine| 150 to 300 mg at bedtime | 75% | 50% | 25% |
</center>
<div id="body_content">
The tables below show the monitoring requirements of common drugs. It should be noted these are basic guidelines and do not relate to monitoring effectiveness of treatment (e.g. Checking lipids for patients taking a statin)<br><br><b>Cardiovascular drugs</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Main monitoring parameters</b></th><th><b>Details of monitoring</b></th></tr></thead><tbody><tr><td>Statins</td><td>LFT</td><td>LFTs at baseline, 3 months and 12 months</td></tr><tr><td>ACE inhibitors</td><td>U&E</td><td>U&E prior to treatment<br>U&E after increasing dose<br>U&E at least annually</td></tr><tr><td>Amiodarone</td><td>TFT, LFT</td><td>TFT, LFT, U&E, CXR prior to treatment<br>TFT, LFT every 6 months</td></tr></tbody></table></div><br><b>Rheumatology drugs</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Drug</b></th><th><b>Main monitoring parameters</b></th><th><b>Details of monitoring</b></th></tr></thead><tbody><tr><td>Methotrexate</td><td>FBC, LFT, U&E</td><td>The Committee on Safety of Medicines recommend 'FBC and renal and LFTs before starting treatment and repeated weekly until therapy stabilised, thereafter patients should be monitored every 2-3 months'</td></tr><tr><td>Azathioprine</td><td>FBC, LFT</td><td>FBC, LFT before treatment<br>FBC weekly for the first 4 weeks<br>FBC, LFT every 3 months</td></tr></tbody></table></div><br><b>Neuropsychiatric drugs</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th><b>Drug</b></th><th><b>Main monitoring parameters</b></th><th><b>Details of monitoring</b></th></tr></thead><tbody><tr><td>Lithium</td><td>Lithium level, TFT, U&E</td><td>TFT, U&E prior to treatment<br>Lithium levels weekly until stabilised then every 3 months<br>TFT, U&E every 6 months</td></tr><tr><td>Sodium valproate</td><td>LFT</td><td>LFT, FBC before treatment<br>LFT 'periodically' during first 6 months</td></tr></tbody></table></div><br><b>Endocrine drugs</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid4"><thead><tr><th><b>Drug</b></th><th><b>Main monitoring parameters</b></th><th><b>Details of monitoring</b></th></tr></thead><tbody><tr><td>Glitazones</td><td>LFT</td><td>LFT before treatment<br>LFT 'regularly' during treatment</td></tr></tbody></table></div></div>
{{Abdominal Cramps Rx}}
<br>
{{Acute Alcoholism Rx}}
<br>
{{Amoebiasis Rx}}
<br>
{{Dyspepsia Rx}}
<br>
{{Gastroenteritis Rx}}
<br>
{{Anorexia Rx}}
<br>
{{Ascites/Portal HTN Rx}}
<br>
{{Colonoscopy Preparation Rx}}
<br>
{{Acute Constipation Rx}}
<br>
{{Chronic Constipation Rx}}
<br>
{{Acute Diarrhea Rx}}
<br>
{{Chronic Diarrhea Rx}}
<br>
{{Mucus Diarrhea Rx}}
<br>
{{Pediatric Diarrhea Rx}}
<br>
{{Diverticulitis Rx}}
<br>
{{Erosive Esophagitis Rx}}
<br>
{{Fissure Rx}}
<br>
{{Gallstone Px}}
<br>
{{Hemorrhoids Rx}}
<br>
{{Hepatitis Rx}}
<br>
{{Hiccups Rx}}
<br>
{{IBS Rx}}
<br>
{{Nausea & Vomiting Rx}}
<br>
{{Oral Candidiasis Rx}}
<br>
{{Ulcerative Colitis Rx}}
<br>
{{Variceal H'age Px}}
<br>
{{Worm Infestation Rx}}
<br>
<div id="body_content">
Drugs which are known to cause impaired glucose tolerance include:<br><ul><li><span class="concept" data-cid="3375">thiazides</span>, <span class="concept" data-cid="7371">furosemide</span> (less common)</li><li><span class="concept" data-cid="3342">steroids</span></li><li><span class="concept" data-cid="5551">tacrolimus</span>, <span class="concept" data-cid="7373">ciclosporin</span></li><li><span class="concept" data-cid="7374">interferon-alpha</span></li><li><span class="concept" data-cid="7375">nicotinic acid</span></li><li><span class="concept" data-cid="6171">antipsychotics</span></li></ul><br><span class="concept" data-cid="7377">Beta-blockers</span> cause a slight impairment of glucose tolerance. They should also be used with caution in diabetics as they can <span class="concept" data-cid="3823">interfere with the metabolic and autonomic responses to hypoglycaemia</span></div>
<div id="notecontent">Drug-induced liver disease is generally divided into hepatocellular, cholestatic or mixed. There is however considerable overlap, with some drugs causing a range of changes to the liver<br><br>The following drugs tend to cause a hepatocellular picture:<br><ul><li><span class="concept" data-cid="4894">paracetamol</span></li><li>sodium valproate, phenytoin</li><li>MAOIs</li><li>halothane</li><li>anti-tuberculosis: isoniazid, rifampicin, pyrazinamide</li><li>statins</li><li>alcohol</li><li>amiodarone</li><li>methyldopa</li><li><span class="concept" data-cid="3983">nitrofurantoin</span></li></ul><br>The following drugs tend to cause cholestasis (+/- hepatitis):<br><ul><li><span class="concept" data-cid="9483">combined oral contraceptive pill</span></li><li>antibiotics: <span class="concept" data-cid="697">flucloxacillin</span>, <span class="concept" data-cid="698">co-amoxiclav</span>, erythromycin*</li><li><span class="concept" data-cid="5860">anabolic steroids</span>, testosterones</li><li>phenothiazines: chlorpromazine, prochlorperazine</li><li><span id="concept_popover_id_8593" class="concept concept-1 trigger-link" data-cid="8593" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8593'>You've been tested on this concept once, 1 second ago, and got the associated question incorrect.</div><br><div id='div_concept_rating8593' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(127,255,0)'>Importance: <b>75</b></span> </div>" data-original-title="Sulphonylureas may cause cholestasis">sulphonylureas</span></li><li>fibrates</li><li>rare reported causes: nifedipine</li></ul><br>Liver cirrhosis<br><ul><li>methotrexate</li><li>methyldopa</li><li>amiodarone</li></ul><br>*risk may be reduced with erythromycin stearate</div>
<div id="notecontent">In drug-induced lupus not all the typical features of systemic lupus erythematosus are seen, with renal and nervous system involvement being unusual. It usually resolves on stopping the drug.<br><br>Features<br><ul><li>arthralgia</li><li>myalgia</li><li>skin (e.g. malar rash) and pulmonary involvement (e.g. pleurisy) are common</li><li>ANA positive in 100%, dsDNA negative</li><li><span class="concept" data-cid="2656">anti-histone antibodies are found in 80-90%</span></li><li>anti-Ro, anti-Smith positive in around 5%</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd125b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd125.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd125b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">A woman with drug-induced lupus</div><br>Most common causes<br><ul><li>procainamide</li><li><span class="concept" data-cid="8969">hydralazine</span></li></ul><br>Less common causes<br><ul><li><span class="concept" data-cid="1644">isoniazid</span></li><li>minocycline</li><li>phenytoin</li></ul></div>
---
>HIPPy with Lupus
:Hydralazine-INH-Procainamide-Phenytoin
---
<div class="twocolumns">
<$list filter="[tag[Drugs]sort[title]]"/>
</div>
People with dry eye syndrome typically present with feelings of dryness, grittiness, or soreness in both eyes, which worsen through the day, and watering of the eyes, particularly when exposed to wind. Symptoms that are worse on wakening, eyelids sticking together on waking, and redness of the eyelids suggest dry eye syndrome caused by Meibomian gland dysfunction.
There may be no abnormalities on examination. Less commonly people present with a complication of dry eye syndrome, for example, conjunctivitis or ulceration of the cornea, suggested by severe pain, photophobia, marked redness, and loss of visual acuity.
Eyelid hygiene is the most appropriate management step here. Eyelid hygiene helps to control blepharitis. Most people with dry eye syndrome have blepharitis.
!!Dystrophinopathies
Overview
* X-linked recessive
* due to mutation in the gene encoding dystrophin, dystrophin gene on Xp21
* dystrophin is part of a large membrane associated protein in muscle which connects the muscle membrane to actin, part of the muscle cytoskeleton
* in Duchenne muscular dystrophy there is a frameshift mutation resulting in one or both of the binding sites are lost leading to a severe form
* in Becker muscular dystrophy there is a non-frameshift insertion in the dystrophin gene resulting in both binding sites being preserved leading to a milder form
Duchenne muscular dystrophy
* progressive proximal muscle weakness from 5 years
* calf pseudohypertrophy
* Gower's sign: child uses arms to stand up from a squatted position
* 30% of patients have intellectual impairment
Becker muscular dystrophy
* develops after the age of 10 years
* intellectual impairment much less common
---
>BECKER is BETTER
*Late Onset - Less Intellectual impairment
---
>DOUCHEnne
*Early onset - Intellectual impairment - DOUCHE bag like Calves
---
''DVLA: neurological disorders''
<hr>
<div id="body_content">
The guidelines below relate to car/motorcycle use unless specifically stated. For obvious reasons, the rules relating to drivers of heavy goods vehicles tend to be much stricter<br><br>Epilepsy/seizures - all patient must not drive and must inform the DVLA<br><ul><li>first unprovoked/isolated seizure: <span class="concept" data-cid="202">6 months</span> off if there are no relevant structural abnormalities on brain imaging and no definite epileptiform activity on EEG. If these conditions are not met then this is increased to 12 months</li><li>for patients with established epilepsy or those with multiple unprovoked seizures: </li><li>→ may qualify for a driving licence if they have been free from any seizure for <span class="concept" data-cid="10622">12 months</span></li><li>→ if there have been no seizures for 5 years (with medication if necessary) a ’til 70 licence is usually restored</li><li>withdrawawl of epilepsy medication: should not drive whilst anti-epilepsy medication is being withdrawn and for 6 months after the last dose</li></ul><br>Syncope<br><ul><li>simple faint: <span class="concept" data-cid="206">no restriction</span></li><li>single episode, explained and treated: 4 weeks off</li><li>single episode, unexplained: 6 months off</li><li>two or more episodes: 12 months off</li></ul><br>Other conditions<br><ul><li>stroke or TIA: <span class="concept" data-cid="207">1 month</span> off driving, may not need to inform DVLA if no residual neurological deficit</li><li>multiple TIAs over short period of times: <span class="concept" data-cid="205">3 months</span> off driving and inform DVLA</li><li>craniotomy e.g. For meningioma: 1 year off driving*</li><li>pituitary tumour: craniotomy: 6 months; trans-sphenoidal surgery 'can drive when there is no debarring residual impairment likely to affect safe driving'</li><li>narcolepsy/cataplexy: cease driving on diagnosis, can restart once 'satisfactory control of symptoms'</li><li>chronic neurological disorders e.g. multiple sclerosis, motor neuron disease: DVLA should be informed, complete PK1 form (application for driving licence holders state of health)</li></ul><br><br>*if the tumour is a benign meningioma and there is no seizure history, licence can be reconsidered 6 months after surgery if remains seizure free</div>
<hr>
''DVLA: cardiovascular disorders''
<hr>
<div id="body_content">
The guidelines below relate to car/motorcycle use unless specifically stated. For obvious reasons, the rules relating to drivers of heavy goods vehicles tend to be much stricter<br><br>Specific rules<br><ul><li>hypertension - can drive unless treatment causes unacceptable side effects, no need to notify DVLA. If Group 2 Entitlement the disqualifies from driving if resting BP consistently 180 mmHg systolic or more and/or 100 mm Hg diastolic or more</li><li>angioplasty (elective) - 1 week off driving</li><li>CABG - 4 weeks off driving</li><li>acute coronary syndrome- 4 weeks off driving, 1 week if successfully treated by angioplasty</li><li>angina - driving must cease if symptoms occur at rest/at the wheel</li><li>pacemaker insertion - 1 week off driving</li><li>implantable cardioverter-defibrillator (ICD): if implanted for sustained ventricular arrhythmia: cease driving for 6 months. If implanted prophylatically then cease driving for 1 month. Having an ICD results in a permanent bar for Group 2 drivers</li><li>successful catheter ablation for an arrhythmia- 2 days off driving</li><li>aortic aneurysm of 6cm or more - notify DVLA. Licensing will be permitted subject to annual review. An aortic diameter of 6.5 cm or more disqualifies patients from driving</li><li>heart transplant: DVLA do not need to be notified</li></ul></div>
<div id="notecontent">NICE updated their guidelines on the investigation and management of venous thromboembolism (VTE) in 2020. Some of the key changes include recommending the following:<br><ul><li>the use of direct oral anticoagulants (DOACs) as first-line treatment for most people with VTE</li><li>the <span id="concept_popover_id_897" class="concept concept-3-u trigger-link" data-cid="897" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative897'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating897' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="Cancer patients with VTE - 6 months of a DOAC">use of DOACs in patients with active cancer</span>, as opposed to low-molecular weight heparin as was the previous recommendation</li><li>routine cancer screening is no longer recommended following a VTE diagnosis</li></ul><br>If a patient is suspected of having a DVT a two-level DVT Wells score should be performed:<br><br><b>Two-level DVT Wells score</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Clinical feature</b></th><th><b>Points</b></th></tr></thead><tbody><tr><td>Active cancer (treatment ongoing, within 6 months, or palliative)</td><td>1</td></tr><tr><td>Paralysis, paresis or recent plaster immobilisation of the lower extremities</td><td>1</td></tr><tr><td>Recently bedridden for 3 days or more or major surgery within 12 weeks requiring general or regional anaesthesia</td><td>1</td></tr><tr><td>Localised tenderness along the distribution of the deep venous system</td><td>1</td></tr><tr><td>Entire leg swollen</td><td>1</td></tr><tr><td>Calf swelling at least 3 cm larger than asymptomatic side</td><td>1</td></tr><tr><td>Pitting oedema confined to the symptomatic leg</td><td>1</td></tr><tr><td>Collateral superficial veins (non-varicose)</td><td>1</td></tr><tr><td>Previously documented DVT</td><td>1</td></tr><tr><td>An alternative diagnosis is at least as likely as DVT</td><td>-2</td></tr></tbody></table></div><br>Clinical probability simplified score<br><ul><li>DVT likely: 2 points or more</li><li>DVT unlikely: 1 point or less</li></ul><br>If a <span id="concept_popover_id_8512" class="concept concept-0 trigger-link" data-cid="8512" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8512'>You've never been tested on this concept</div><br><div id='div_concept_rating8512' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="Following Wells' scoring, if a DVT is 'likely' (> 2 points) then arrange a proximal leg vein ultrasound scan within 4 hours">DVT is 'likely' (2 points or more)</span><br><ul><li>a proximal leg vein ultrasound scan should be carried out within 4 hours<ul><li>if the result is positive then a diagnosis of DVT is made and anticoagulant treatment should start</li><li>if the result is negative a D-dimer test should be arranged. A negative scan and negative D-dimer makes the diagnosis unlikely and alternative diagnoses should be considered</li></ul></li><li>if a proximal leg vein ultrasound scan cannot be carried out within <span class="concept" data-cid="4217">4 hours a D-dimer test should be performed and interim therapeutic anticoagulation</span> administered whilst waiting for the proximal leg vein ultrasound scan (which should be performed within 24 hours)<ul><li>interim therapeutic anticoagulation used to mean giving low-molecular weight heparin</li><li>NICE updated their guidance in 2020. They now recommend using an anticoagulant that can be continued if the result is positive. </li><li>this means normally a direct oral anticoagulant (DOAC) such as apixaban or rivaroxaban</li></ul></li><li>if the scan is negative but the D-dimer is positive:<ul><li>stop interim therapeutic anticoagulation</li><li>offer a repeat proximal leg vein ultrasound scan 6 to 8 days later </li></ul></li></ul><br>If a <span class="concept" data-cid="4217">DVT is 'unlikely' (1 point or less)</span><br><ul><li>perform a D-dimer test<ul><li>this should be done within 4 hours. If not, interim therapeutic anticoagulation should be given until the result is available</li><li>if the result is negative then DVT is unlikely and alternative diagnoses should be considered</li><li>if the result is positive then a proximal leg vein ultrasound scan should be carried out within 4 hours</li><li>if a proximal leg vein ultrasound scan cannot be carried out <span class="concept" data-cid="4216">within 4 hours interim therapeutic anticoagulation</span> should be administered whilst waiting for the proximal leg vein ultrasound scan (which should be performed within 24 hours)</li></ul></li></ul><br>D-dimer tests<br><ul><li>NICE recommend either a point-of-care (finger prick) or laboratory-based test</li><li>age-adjusted cut-offs should be used for patients > 50 years old</li></ul><br><br><b>Management</b><br><br>The cornerstone of VTE management is anticoagulant therapy. This was historically done with warfarin, often preceded by heparin until the INR was stable. However, the development of DOACs, and an evidence base supporting their efficacy, has changed modern management.<br><br>Choice of anticoagulant<br><ul><li>the big change in the 2020 guidelines was the increased use of DOACs</li><li>apixaban or rivaroxaban (both DOACs) should be offered first-line following the diagnosis of a DVT<ul><li>instead of using low-molecular weight heparin (LMWH) until the diagnosis is confirmed, NICE now advocate using a <span class="concept" data-cid="8024">DOAC once a diagnosis is suspected</span>, with this continued if the diagnosis is confirmed</li><li>if neither apixaban or rivaroxaban are suitable then either LMWH followed by dabigatran or edoxaban OR LMWH followed by a vitamin K antagonist (VKA, i.e. warfarin)</li></ul></li><li>if the patient has active cancer<ul><li>previously LMWH was recommended</li><li>the <span id="concept_popover_id_897" class="concept concept-3-u trigger-link" data-cid="897" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative897'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating897' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="Cancer patients with VTE - 6 months of a DOAC">new guidelines now recommend using a DOAC</span>, unless this is contraindicated</li></ul></li><li>if renal impairment is severe (e.g. < 15/min) then LMWH, unfractionated heparin or LMWH followed by a VKA</li><li>if the patient has antiphospholipid syndrome (specifically 'triple positive' in the guidance) then LMWH followed by a VKA should be used</li></ul><br>Length of anticoagulation<br><ul><li>all patients should have anticoagulation for at least 3 months</li><li>continuing anticoagulation after this period is partly determined by whether the VTE was provoked or unprovoked<ul><li>a provoked VTE is due to an obvious precipitating event e.g. immobilisation following major surgery. The implication is that this event was transient and the patient is no longer at increased risk</li><li>an unprovoked VTE occurs in the absence of an obvious precipitating event, i.e. there is a possibility that there are unknown factors (e.g. mild thrombophilia) making the patient more at risk from further clots</li></ul></li><li><span id="concept_popover_id_898" class="concept concept-3-u trigger-link" data-cid="898" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative898'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating898' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(127,255,0)'>Importance: <b>75</b></span> </div>" data-original-title="Venous thromoboembolism - length of warfarin treatment
- provoked (e.g. recent surgery): 3 months
- unprovoked: 6 months">if the VTE was provoked the treatment is typically stopped after the initial 3 months</span> (3 to 6 months for people with active cancer)</li><li><span id="concept_popover_id_898" class="concept concept-3-u trigger-link" data-cid="898" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative898'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating898' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(127,255,0)'>Importance: <b>75</b></span> </div>" data-original-title="Venous thromoboembolism - length of warfarin treatment
- provoked (e.g. recent surgery): 3 months
- unprovoked: 6 months">if the VTE was unprovoked then treatment is typically continued for up to 3 further months (i.e. 6 months in total)</span><ul><li>NICE recommend that whether a patient has a total of 3-6 months anticoagulant is based upon balancing a person's risk of VTE recurrence and their risk of bleeding</li><li>the HAS-BLED score can be used to help assess the risk of bleeding</li><li>NICE state: '<i>Explain to people with unprovoked DVT or PE and a low bleeding risk that the benefits of continuing anticoagulation treatment are likely to outweigh the risks. </i>'. The implication of this is that in the absence of a bleeding risk factors, patients are generally better off continuing anticoagulation for a total of 6 months </li></ul></li></ul><br>Thrombophilia screening<br><ul><li>not offered if patients will be on lifelong warfarin (i.e. won't alter management)</li><li>consider testing for antiphospholipid antibodies if unprovoked DVT or PE</li><li>consider testing for hereditary thrombophilia in patients who have had unprovoked DVT or PE and who have a first-degree relative who has had DVT or PE</li></ul></div>
---
!!!<center>''DVT PROTOCOL''</center>
<hr>
* Do Well’s score to determine pre-TP of DVT
* Active cancer (tx ongoing or w/i 6 m/palliative) 1 pt
* Paralysis, or recent immobilization of LE 1 pt
* Recently bedridden>3 d or major surgery w/i 4 wk 1 pt
* Localized tenderness along deep veins 1 pt
* Entire leg swelling 1 pt
* Calf swelling by >3 cm c/w asx (10 cm below tibial tuberosity) 1 pt
* Pitting edema (greater in symptomatic leg) 1 pt
* Collateral superficial veins (nonvaricose) 1 pt
* Previously documented DVT 1 pt
* Alternative dx as likely than that of DVT −2 pts
|!Points|!Pre-test Prob|!D-dimer Sensitivity(%)|!Prevalence of DVT(%)|!NPV of D-dimer(%)|
|-2 to 0|Low|86|5|99|
|1 to 2|Moderate|85|17|95|
|≥3|High|90|53|81|
* UE DVT: Anticoagulation × 3–6 mo
* Catheter-associated DVT: Catheter removal only indicated if catheter malfxn or infxn, no further need for catheter
* Isolated basilic/cephalic vein thrombosis: very low risk of PE, no A/C required
* LE DVT: Anticoagulation × 3–6 mo
* Anticoagulation regimen should be selected based on comorbidities, ability to take PO medications, patient preference (monitoring, etc.), risks of bleeding:
* Inj LMWH (1 mg/kg BID) sc OR
* Inj Fondaparinux (5 mg QD [<50 kg], 7.5 mg QD [50–100 kg], 10 mg QD [>100 kg];
* Inj UFH IV (80 U/kg bolus, 18 U/kg/h gtt):
* Start Warfarin (INR 2.0–3.0): Bridge w/ LMWH/Fondaparinux until INR therapeutic
* Tab Rivaroxaban (15 mg BID x 3 wk, 20 mg QD thereafter) or
* Tab Apixaban (10 mg BID x 7 d, 5 mg BID thereafter)
* Duration of treatment generally depends if provoked (3 mo) or unprovoked (6 mo if no bleeding risk, 3 mo if bleeding risk)
* If strong contraindications to A/C: IVC filter until bleeding risk resolves
* Isolated distal DVT: Tx as above if severe sx or e/o extension on repeat U/S (1–2 wk)
!!!<center>''DYSELECTROLYTEMIA PROTOCOL''</center>
<hr>
''HYPOKALEMIA''
* Inj KCL 1 amp in 100 ml in NS in 2 hrs, recheck K in 6 hrs (K 3-3.5)
* Inj KCL 2 amp in 250 ml in NS in 4 hrs, recheck K after 6 hrs (K 2.6-3.0)
* Inj KCL 3 amp in 500 ml in NS in 6 hrs, recheck K after 6 hrs (K<2.5)
* Syr Potklor 1 tsp TDS, rechek K after 12 hrs
''HYPOMAGNESEMIA''
* Level: (1 – 1.5) Inj Magnesium Sulfate 2 gm (2 amp) IV in 100 mL of D5W or NS over 2 hours (2 gm =16.2 meq)
* Level (< 1) Inj Magnesium Sulfate 4 gm (4 amp) IV in 250 mL of D5W or NS over 4 hours (4gm = 32.4 meq)
* In patients with renal insufficiency (creatinine clearance < 50 mL/min) use 50% or less of the suggested dose.
''HYPOCALCEMIA''
* Mild (ionized calcium: [1-1.2 mmol/L]): 1000-2000 mg over 2 hours; Inj Calcium gluconate 1-2 amp in 100 ml NS in 2 hrs
* Asymptomatic patients may be given oral calcium. Tab Shelcal 500 QID
* Moderate-to-severe (without seizure or tetany; ionized calcium: [<1 mmol/L]): 4000 mg over 4 hours. Inj Calcium gluconate 4 amp in 100 ml NS in 4 hrs
* Severe symptomatic (eg, seizure, tetany): 1000-2000 mg over 10 minutes; repeat every 60 minutes until symptoms resolve
''HYPERPHOSPHATEMIA''
* Tab Shelcal 500 mg 2 tab TDS with meals or
* Tab Lanum calcium acetate 667mg tid with meals
''HYPERCALCEMIA''
* IVF volume resuscitation: at least 3-4L in first 24 hours
* Inj Lasix 20 mg IV after volume repleted (urine Na and Cl > 90). Keep I =O.
* Calcitonin: 4-8u SQ/IM q6-12hr. Works within hours, but weak effect (1-3 037 mg/dL) that wanes after 2-3 days.
* Pamidronate: 90mg IV over 24hr (for Ca>13.5) or zolindronic acid 4mg once. Treatment of choice in hypercalcemia of malignancy. Side effects include decreased Mg and phos and low grade temperature.
* Caution with bisphosphonates in renal failure.
''HYPERMAGNESEMIA''
* 1 amp calcium gluconate over 10 minutes.
''HYPERKALEMIA''
* Inj Calcium gluconate + 10 ml NS pass slowly in 15 min
* Calcium treatment may be repeated after 5 minutes if ECG changes persist; patient must be on cardiac monitor when receiving calcium;
* Inj Insulin regular 10 U + 100 ml 25% Dextrose IV STAT
* Nebs Asthalin 10-20 ml in 4 mL saline nebulized over 10 minutes
* Inj Sodium bicarbonate 150 meq in 500 ml 5% Dextrose in 4 hrs
* Sachet K-bind 15-30 mg STAT
* Inj Lasix 20-40 mg IV STAT
* Hemodialysis
* Recheck K q6h
''HYPONATREMIA (when Na<120)''
* Inj 3% NS 100 ml IV STAT, then 10-15ml/hr and then chek Na q12h; adjust drip according to Na level.
* Inj Lasix 40 mg IV q12h if edematous(heart failure, cirrhosis)
* Check Na every 4-6 hrs
* Discontinue drip when Na>126
* Rate of increase of Na should not exceed 4-6 mEq/L in 24 hrs
* Other orders:
''HYPERNATREMIA''
* Sodium: change IVF to D5W, LR or 1/2NS, consider increasing free water flushes with tube feeds.
<div id="notecontent">Dysmenorrhoea is characterised by excessive pain during the menstrual period. It is traditionally divided into primary and secondary dysmenorrhoea.<br><br><b>Primary dysmenorrhoea</b><br><br>In primary dysmenorrhoea there is no underlying pelvic pathology. It affects up to 50% of menstruating women and usually appears within 1-2 years of the menarche. Excessive endometrial prostaglandin production is thought to be partially responsible.<br><br>Features<br><ul><li>pain typically starts just before or within a few hours of the period starting</li><li>suprapubic cramping pains which may radiate to the back or down the thigh</li></ul><br>Management<br><ul><li>NSAIDs such as mefenamic acid and ibuprofen are effective in up to 80% of women. They work by inhibiting prostaglandin production</li><li>combined oral contraceptive pills are used second line</li></ul><br><b>Secondary dysmenorrhoea</b><br><br>Secondary dysmenorrhoea typically develops many years after the menarche and is the result of an underlying pathology. In contrast to primary dysmenorrhoea the pain usually starts 3-4 days before the onset of the period. Causes include:<br><ul><li>endometriosis</li><li>adenomyosis</li><li>pelvic inflammatory disease</li><li>intrauterine devices*</li><li>fibroids</li></ul><br>Clinical Knowledge Summaries recommend referring all patients with secondary dysmenorrhoea to gynaecology for investigation.<br><br>*this refers to normal copper coils. Note that the intrauterine system (Mirena) may help dysmenorrhoea</div>
<div id="notecontent">The 2015 NICE guidelines 'Suspected cancer: recognition and referral' further updated the advice on who needs urgent referral for an endoscopy (i.e. within 2 weeks). The list below combines the advice for oesophageal and stomach cancer, with the bold added by the author, not NICE.<br><br><b>Urgent</b><br><br>All patients who've got <b>dysphagia</b><br><br>All patients who've got an <b>upper abdominal mass</b> consistent with stomach cancer<br><br>Patients aged >= 55 years who've got <b>weight loss</b>, AND any of the following:<br><ul><li>upper abdominal pain</li><li>reflux</li><li>dyspepsia </li></ul><br><b>Non-urgent</b><br><br>Patients with <b>haematemesis</b><br><br>Patients aged >= 55 years who've got:<br><ul><li><b>treatment-resistant dyspepsia</b> or</li><li>upper abdominal pain with low haemoglobin levels or</li><li><span class="concept" data-cid="3463"><b>raised platelet count</b></span> with any of the following: nausea, vomiting, weight loss, reflux, dyspepsia, upper abdominal pain</li><li>nausea or vomiting with any of the following: weight loss, reflux, dyspepsia, upper abdominal pain</li></ul><br><br><b>Managing patients who do not meet referral criteria ('undiagnosed dyspepsia')</b><br><br>This can be summarised at a step-wise approach<br><ul><li>1. Review medications for possible causes of dyspepsia</li><li>2. Lifestyle advice</li><li>3. Trial of full-dose proton pump inhibitor for one month OR a 'test and treat' approach for <i>H. pylori</i><ul><li>if symptoms persist after either of the above approaches then the alternative approach should be tried</li></ul></li></ul><br>Testing for <i>H. pylori</i> infection<br><ul><li>initial diagnosis: NICE recommend using a carbon-13 urea breath test or a stool antigen test, or laboratory-based serology 'where its performance has been locally validated'</li><li>test of cure:<ul><li>there is <span class="concept" data-cid="10943">no need to check for <i>H. pylori</i> eradication if symptoms have resolved</span> following test and treat</li><li>however, if repeat testing is required then a carbon-13 urea breath test should be used</li></ul></li></ul></div>
---
>BREATH is the FINAL TEST
---
!!!<center>''DYSPEPSIA/GAS/GERD/HEARTBURN/ULCER DRUGS'' </center>
| !ANTACIDS |<|
|Al(OH),,3,,+<br>Mg(OH),,2,,+ <br>Dimethacone|Syr Gelusil MPS 2 tsp, TDS, 1-3 hours after meals, 7 days<br>Tab Gelusil 1-2 tablets after meals or at bedtime, 7 days; Chew tablet thoroughly before swallowing or allow tablets to dissolve slowly in mouth. Follow with a full glass of water.|
|Al(OH)3+<br>Mg(OH),,2,,+ <br>Oxycaine|Syr Mucaine gel 2 tsp, TDS, 1-3 hours after meals, 7 days|
|Al(OH),,3,,+<br>Mg(OH),,2,,+ <br>Alginic acid|Syr Acigon 2 tsp, TDS, 1-3 hours after meals, 7 days|
|Magaldrate+<br>Simethicone|Syr Ulgel 2 tsp TDS|
|Magaldrate+<br>Simethicone+<br>Oxetacaine|Syr Ulgel A 2 tsp TDS|
|Sucralfate+<br>Oxetacaine|Syr Sucral O 2 tsp TDS|
| !PROTON PUMP INHIBITORS |<|
|Rabeprazole|Tab Cyra 20 mg OD, 1 wk before breakfast|
|Omeprazole|Cap Omez 20 mg OD, 1 wk, before breakfast|
| !H,,2,, RECEPTOR BLOCKERS |<|
|Famotidine|Tab Famocid 20 mg BD, 1 wk|
|Ranitidine|Tab Aciloc 150 mg BD, 1 wk|
| !GAS |<|
|''Advice:'' <br>• Avoid oily & fried foods (pakodas, samosa, namkeen, potato chips, puri-bhaji), soft drinks, over eating. <br>• Avoid tubers like potato, sweet potato.<br>• STOP smoking, pan chewing. <br>• Avoid onion, peas, beans, dals. <br>• Regular exercises to improve the tone of abdominal muscles.|<|
|ENO|ENO salt 1 tsp with water after meals, 1 wk|
|Albendazole|Tab. Zentel 400 mg once|
|Liver meds|Syr Livomyn 2 tsp TDS, 2 wks<br>Syr Melcoline/Sorbiline 10 ml diluted in water before lunch and dinner|
|Domperidone|Tab Domstal 10 mg TDS, 15-30 minutes before meals and at bedtime if needed. 1 wk|
|Enzymes|Tab Unienzyme 1 tab TDS with meals, 7 days<br>Dps Unienzyme 10 dps TDS with meals, 7 days|
|Al(OH),,3,,+<br>Mg(OH),,2,,|Syr Gelusil MPS 2 tsp, TDS, 1-3 hours after meals, 7 days|
|Carminative|Carminative liquid 1 tsp TDS, 1 wk|
|Ayurvedic|Tab Gasex 1 tab TDS, 1 wk|
|Magaldrate+<br>Simethicone|Syr Alcaine MPS 5-10 mL between meals and at bedtime|
| !GAS WITH CONSTIPATION |<|
|Mg(OH),,2,,|Syr Cremaffin 30-60 mL/day once daily at bedtime|
| !GAS WITH MUCUS IN STOOLS |<|
|Metronidazole|Tab Metrogyl 200 mg TDS, 1 wk, with food|
| !GERD |<|
|''Advice:'' <br>• Do not lie down immediately after food. <br>• Take small non bulky meals. <br>• Head high position at night. <br>• Lose weight if obese. <br>• Avoid wearing tight belt or clothes over abdomen.|<|
|B,,12,,|Inj Neurobion 2 cc IM on alternate days for 10 days|
|Vitamin B complex|Syr Becosules 1 tsp daily 2 wks|
|Al(OH),,3,,+<br>Mg(OH),,2,,+<br>Oxycaine|Syr Mucaine gel 2 tsp, TDS, 1-3 hours after meals, 7 days|
|Esomeprazole|Tab Nexpro/Nexium 20 mg OD , 4 wks, 1 hr before breakfast|
|Esomeprazole+<br>Domp|Tab Sompraz-D OD , 4 wks, 1 hr before breakfast|
|Lansoprazole|Cap Lanzol 15 mg OD for 8 wks, before breakfast|
|Lansoprazole peds|Cap Lanzol Junior 15 mg OD for 8 wks, before breakfast|
|Metoclopramide|Tab Perinorm 10 mg TDS, 1 wk 30 minutes before meals or food and at bedtime<br>Syr Perinorm 5 mg/5ml 2 tsp TDS, 1 wk 30 minutes before meals or food and at bedtime (0.1/kg dose)|
|Pantoprazole|Tab Pantop 40 mg OD, 4 wks before breakfast|
|Pantoprazole+<br>Domp|Cap Pantop-D OD, 4 wks before breakfast|
|Rabeprazole|Tab Cyra 20 mg OD, 4 wks before breakfast|
|Rabeprazole+<br>Domperidone|Tab Cyra D OD, 4 wks before breakfast|
|Ranitidine|Tab Aciloc 150 mg BD, 1 wk|
| !GERD WITH ANEMIA |<|
|Iron dextran|Inj Fejet/Imferon F-12 2 cc IM daily, 10 days|
|Itopride|Tab Ganaton 50 mg 3 times/day before meals|
|Levosulpride|Tab Lesuride 25 mg TDS|
|Rabeprazole+<br>Itopride|Cap Cyra-IT OD|
|Rabeprazole+<br>Levosulpride|Tab Cyra LS OD|
| !H.PYLORI |<|
|Omeprazole 20+<br>Amox 750+<br>Tini 500|Helikit 1 kit daily, 7 days|
|Lansoprazole 30+<br>Clarithro 250+<br>Tinidazole 500|Pyelo kit 1 kit daily, 7 days|
| !HEART BURN |<|
|Ranitidine|Tab Aciloc 150 mg OD, 1 wk|
|Ranitidine+<br>Domp|Tab Aciloc -RD BD, 1 wk|
|Ranitidine Inj|Inj Aciloc 1 amp IV q12h|
| !ULCER |<|
|''Advice: ''<br>• Avoid periods of starvation.<br>• Take small meals every 3 hrs.<br>• Do not keep the stomach empty, also do not take heavy meals.<br>• Avoid Tea and coffee particularly on empty stomach.<br>• Take milk with Horlicks or Bournvita.<br>• Bread or toast with jam, biscuits, idli, corn flakes can be taken.<br>• Avoid deep fried & hot foods like samosa, pakoda, masala dosa, etc<br>• Avoid all chillies. <br>• Avoid chat preparations.<br>• Take plenty of raw and boiled vegetables. <br>• Take rice with dal, chapati, pulka or roti.<br>• Avoid sour fruits like citrus fruit. <br>• Take sweet fruits, dry fruits|<|
|Famotidine|Tab Famocid 20 mg BD, 4 wks|
|Ulcer H.Pylori|Cap Omez 20 mg BD, 7 days,<br>Cap Mox 500 mg 2 Cap BD, 7 days,<br>Tab Tiniba 500 mg BD 7 days|
|Lansoprazole+<br>Clarithro+<br>Tini|
|Pylokit 1 kit daily, 7 days|Lansoprazole|Cap Lanzol 15 mg OD for 4 wks, before breakfast|
|Omeprazole|Cap Omez 20 mg OD, 4 wks, before breakfast|
|Omeprazole+<br>Domp|Cap Omez-D OD, 4 wks, before breakfast|
|Rabeprazole|Tab Cyra 20 mg OD, 4 wks before breakfast|
|Ranitidine|Tab Aciloc 150 mg BD, 1 wk|
|Sucralfate|Syr Sucral-O 1 tsp TDS, 7 days before meals|
|Rabeprazole|Tab Cyra-D OD, 6 wks before breakfast|
<div id="body_content">
The table below gives characteristic exam question features for conditions causing dysphagia. Remember that new-onset dysphagia is a red flag symptom that requires urgent endoscopy, regardless of age or other symptoms.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Causes</th><th>Notes</th></tr></thead><tbody><tr><td><b><span class="concept" data-cid="8031">Oesophageal cancer</span></b></td><td>Dysphagia may be associated with weight loss, anorexia or vomiting during eating<br>Past history may include Barrett's oesophagus, GORD, excessive smoking or alcohol use</td></tr><tr><td><b><span class="concept" data-cid="8033">Oesophagitis</span></b></td><td>There may be a history of heartburn<br>Odynophagia but no weight loss and systemically well</td></tr><tr><td><b><span class="concept" data-cid="8032">Oesophageal candidiasis</span></b></td><td>There may be a history of HIV or other risk factors such as steroid inhaler use</td></tr><tr><td><b>Achalasia</b></td><td>Dysphagia of <span class="concept" data-cid="8238">both liquids and solids from the start</span><br>Heartburn<br>Regurgitation of food - may lead to cough, aspiration pneumonia etc</td></tr><tr><td><b><span class="concept" data-cid="8034">Pharyngeal pouch</span></b></td><td>More common in older men<br>Represents a posteromedial herniation between thyropharyngeus and cricopharyngeus muscles<br>Usually not seen but if large then a midline lump in the neck that gurgles on palpation<br>Typical symptoms are dysphagia, regurgitation, aspiration and chronic cough. Halitosis may occasionally be seen</td></tr><tr><td><b><span class="concept" data-cid="8035">Systemic sclerosis</span></b></td><td>Other features of CREST syndrome may be present, namely Calcinosis, Raynaud's phenomenon, oEsophageal dysmotility, Sclerodactyly, Telangiectasia<br><br>As well as oesophageal dysmotility the lower oesophageal sphincter (LES) pressure is decreased. This contrasts to achalasia where the LES pressure is increased</td></tr><tr><td><b><span class="concept" data-cid="8030">Myasthenia gravis</span></b></td><td>Other symptoms may include extraocular muscle weakness or ptosis<br>Dysphagia with liquids as well as solids</td></tr><tr><td><b><span class="concept" data-cid="8029">Globus hystericus</span></b></td><td>There may be a history of anxiety<br>Symptoms are often intermittent and relieved by swallowing<br>Usually painless - the presence of pain should warrant further investigation for organic causes</td></tr><tr><td>EosinophilicEsophagitis</td><td></td></tr></tbody></table></div><br><br><b>Causes of dysphagia - by classification</b><br><br>As with many conditions, it's often useful to think about causes of a symptom in a structured way:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Classification</th><th>Examples</th></tr></thead><tbody><tr><td><b>Extrinsic</b></td><td><ul><li>Mediastinal masses</li><li>Cervical spondylosis</li></ul></td></tr><tr><td><b>Oesophageal wall</b></td><td><ul><li>Achalasia</li><li>Diffuse oesophageal spasm</li><li>Hypertensive lower oesophageal sphincter</li></ul></td></tr><tr><td><b>Intrinsic</b></td><td><ul><li>Tumours</li><li>Strictures</li><li>Oesophageal web</li><li>Schatzki rings</li></ul></td></tr><tr><td><b>Neurological</b></td><td><ul><li>CVA</li><li>Parkinson's disease</li><li>Multiple Sclerosis</li><li>Brainstem pathology</li><li>Myasthenia Gravis</li></ul></td></tr></tbody></table></div><br><b>Investigation</b><br><br>All patients require an upper GI endoscopy unless there are compelling reasons for this not to be performed. Motility disorders may be best appreciated by undertaking fluoroscopic swallowing studies. <br><br>A full blood count should be performed.<br><br>Ambulatory oesophageal pH and manometry studies will be required to evaluate conditions such as achalasia and patients with GORD being considered for fundoplication surgery.</div>
!!!<center>''DYSPNEA''</center>
<hr>
//A patient admitted to ICU to rule out a myocardial infarction (MI) complains of difficulty breathing//
* Immediate Questions
* Was the onset of dyspnea acute or gradual?
* Acute: bronchospasm, PE, pneumothorax, pulmonary infection, ARDS, MI, acute cardiogenic pulmonary edema, and anxiety.
* Any chest pain? Get ECG, CXR
* Is the patient cyanotic? Give O2, may need intubation
* Think of PE if H/O prolonged immobilization, recent operative procedure, obesity, malignancy, DVT, on high-dose estrogen therapy/OCP, smokers
* H/O trauma: Pneumothorax. Get CXR
* H/O Asthma, COPD: get CXR and start protocol
* If altered mental status or advanced age: think of aspiration, CVA
* Pneumonia: fever, productive cough, radiographic infiltrates, and leukocytosis or leukopenia.
* R/O MI get ECG and CXR
* CHF/Tamponade: Bedside ECHO
* Any Arrhythmias on ECG: cardio consult
* Other organic causes. Anemia, GERD, thyrotoxicosis, hypothyroidism, metabolic acidosis (DKA), renal failure (pulmonary edema and/or uremic pericarditis), massive ascites, and deconditioning all can cause dyspnea.
* Get CBC, TSH, KFT, ABD, RBS, ECG, Trop-T
!!Shoulder dystocia
is a true obstetric emergency which has a high rate of foetal morbidity and mortality. Shoulder dystocia is a complication of vaginal cephalic delivery. It entails inability to deliver the body of the fetus using gentle traction, the head having already been delivered. Shoulder dystocia is a cause of both maternal and fetal morbidity. It is associated with postpartum haemorrhage and perineal tears with respect to the former, and brachial plexus injury with respect to the latter, amongst other complications. Neonatal death occasionally occurs.
!!!Key risk factors
for shoulder dystocia include fetal macrosomia, high maternal body mass index, diabetes mellitus and prolonged labour. It usually occurs due to impaction of the anterior fetal shoulder on the maternal pubic symphysis.
!!!Management
There are several different options for managing this situation.
* The ''McRoberts' manoeuvre'' attempts to increase the size of the pelvic outlet while ''suprapubic pressure'' attempts to dislodge the troublesome anterior shoulder from the maternal symphysis.
* ''Cleidotomy'' is the iatrogenic division of the fetal clavicle in order to expedite delivery.
* The ''Zavanelli Manoeuvre'' is a little used procedure which involves the replacing of the foetal head in order to perform an emergency caesarean section.
* ''Symphysiotomy'' and the Zavanelli manoeuvre can cause significant maternal morbidity and are not first-line options.
!!!~McRoberts' manoeuvre
:This manoeuvre entails `flexion and abduction of the maternal hips`, bringing the mother's thighs towards her abdomen. This rotation increases the relative anterior-posterior angle of the pelvis and often facilitates a successful delivery.
!!!<center>''DYSURIA''</center>
<hr>
//A 36-year-old woman complains of pain with urination//
* Immediate Questions
* How long have the symptoms been present?
* Acute 1-2 days: UTI
* >1 wk: more likely to have a more serious infection (upper tract involvement).
* Gradual onset, >7 days: chlamydial or gonorrheal infection, Prostatitis
* Fever, chills, nausea, vomiting, and back pain? Pyelonephritis; admit
* Dysuria, frequency, urgency, and suprapubic pain: lower UTI: cystitis, prostatitis, and urethritis.
* A vaginal discharge suggests a vaginitis, such as that caused by Gardnerella vaginalis in bacterial vaginosis, Candida albicans, or Trichomonas vaginalis, as a cause of dysuria.
* STDs such as chlamydia and gonorrhea can also cause urethritis.
* In men, ask about a recent penile discharge.
* Any H/O UTIs or urologic abnormality?
* Women and patients with a urinary tract abnormality are predisposed to recurrent UTIs.
* Patients with recurrent UTIs (> 2 UTIs per year) are managed with longer courses of antibiotics and possibly prophylactic antibiotics.
* Has the patient recently had a Foley catheter removed? Catheter placement may result in an infection or transient urethral irritation.
* Women: Acute pyelonephritis, Complicated UTI, Lower UTI (cystitis or urethritis), Chlamydial urethritis, Neisseria gonorrhoeae and T vaginalis, Vaginitis: bacterial vaginosis, candida vulvovaginitis, and trichomoniasis.
* Men: Acute pyelonephritis, Lower UTI, Urethritis (chlamydia and gonorrhea), Prostatitis, Cancer. Think of bladder, prostate, and urethral cancer, Benign conditions: Urethral stricture, meatal stenosis, and benign prostatic hypertrophy.
* In women who present with acute dysuria and also complain of a vaginal discharge, pelvic exam is mandatory to rule out vaginitis, cervicitis, and pelvic inflammatory disease. GYN consult
* Check urine RE, Urine culture, blood cultures in septic patients, CBC
* Acute uncomplicated cystitis (females): Nitrofurantoin 100 mg BD for 5 days Alt: Amox clav 1g BD or Cefixime 400 mg BD for 5-7 days
* Acute uncomplicated cystitis (males): Ciprofloxacin 500mg BD or Levofloxacin 750 mg OD for 7 days. Alt: Nitrofurantoin 100mg BD for 7 ds
* Acute Pyelonephritis, Urosepsis: Ceftriaxone 1g IV Q24H OR Levoflox 500 IV q24h 2wks OR Amikacin 1g IV/IM OD OR Genta 7 mg/kg/d OR Pip-Taz 4.5 q8h OR Cefoperazone-sulb 3 gm IV q12h OR Meropenem 1g TDS for 14 ds
* Complicated UTI / Catheter related: Meropenem 1g TDS for 14 days. Alternative: Piperacillin tazobactam 4.5 gm QID for 14 days
* Bacterial prostatitis (acute and chronic): Ciprofloxacin 500 BD or Levofloxacin 750 OD up to 6 weeks. Alt: Bactrim DS BD upto 6 wks
* Urethral discharge (Chlamydia/Gonorrhoea/ Mycoplasma/trichomonas): Tab. Azithromycin 1 gm OD Stat + Tab. Cefixime 400 mg OD Stat
* Cervical discharge: Tab. Azithromycin 1 gm OD Stat + Tab. Cefixime 400 mg OD Stat
* Vaginal Discharge: Tab. Secnidazole 2 g OD Stat + Cap. Fluconazole 150 mg OD Stat; Alternative: Secnidazole can be replaced with Tinidazole 2g single dose
!!!Digoxin toxicity
* a prolonged PR interval
* a short QT interval
* ST depression
* inverted T waves
---
{{ECG: HypoThermia}}
---
* ECG changes in hypokalemia are flat T waves, ST depression and prominent U waves;
* In hypercalcaemia you may see a shortened QT interval;
* In hypocalcaemia you will see intermittent prolongation of the QT interval and Hypophosphataemia is unlikely to cause any significant ECG changes.
!!!The contraindications for exercise ECG testing includes
* unstable angina,
* electrolyte disturbance,
* recent myocardial infarction (within the last 7 days),
* aortic stenosis,
* heart failure and
* pulmonary oedema.
|!Left Axis Deviation|!Right Axis Deviation|
|[[LBBB]]|[[RBBB]]|
|Left anterior hemiblock|Left posterior hemiblock|
|Inferior MI|Lateral MI|
|WPW* Right-sided accessory pathway|WPW* Left-sided accessory pathway|
|ostium primum ASD, tricuspid atresia|ostium secundum ASD, normal in infant < 1 years old|
|minor LAD in obese people|minor RAD in tall people|
|HyperKalemia||
;BLOCKs on SAME side
:BLOCKS and HEMI BLOCKS of SAME side cause SAME side axis deviation
;Anterior Inferior go together - Posterior Lateral go together
:Left ANTERIOR hemiblock & INFERIOR MI - lly
;MI and Accessory pathways are reverse
:RIGHT (Inf) MI & RIGHT accessory pathway leads to LEFT deviation
:LEFT (Lateral) Mi & LEFT accessory pathway leads to RIGHT deviation
`Prolonged QT interval, prolonged PR interval and U waves are ECG features of hypokalaemia Vs Wide QRS in HyperKalemia`
;ECG features of hypokalaemia
* U waves (also in HypoCalcemia & HypoThermia)
* small or absent T waves (occasionally inversion)
* prolong PR interval(also in HyperKalemia)
* ST depression
* long QT
The ECG below shows typical U waves. Note also the borderline PR interval.
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg011c.jpg">
</center>
;In Hypokalaemia, U have no Pot and no T, but a long PR and a long QT
!!!The following ECG changes may be seen in hypothermia
* bradycardia
* 'J' wave - small hump at the end of the QRS complex
* first degree heart block
* long QT interval
* atrial and ventricular arrhythmias
Causes of a ''prolonged PR interval''
*idiopathic
*ischaemic heart disease
*digoxin toxicity
*hypokalaemia*
*rheumatic fever
*aortic root pathology e.g. abscess secondary to endocarditis
*Lyme disease
*sarcoidosis
*myotonic dystrophy
A prolonged PR interval may also be seen in athletes
A ''short PR interval'' is seen in Wolff-Parkinson-White syndrome
hyperkalaemia* can rarely cause a prolonged PR interval, but this is a much less common association than hypokalaemia
!!!Causes of ST elevation
* myocardial infarction
* pericarditis/myocarditis
* normal variant - 'high take-off'
* left ventricular aneurysm
* Prinzmetal's angina (coronary artery spasm)
* Takotsubo cardiomyopathy
* rare: subarachnoid haemorrhage
!!!Infarct patterns
named according to the leads with maximal ST elevation
* Septal = V1-2
* Anterior = V2-5
* Anteroseptal = V1-4
* Anterolateral = V3-6, I and aVL
* Extensive anterior / anterolateral = V1-6, I and aVL
;SALA Harsha likes AUNTIES
:''S''eptal ''A''nterior ''LA''teral in sequence - 2345 is Anterior - 12 Anterior - 56 Lateral
Infarction of the lateral wall usually occurs as part of a larger territory infarction and isolated lateral infacrtion is uncommon.
Peaked T waves
* hyperkalaemia
* myocardial ischaemia
Inverted T waves
* myocardial ischaemia
* ''A''rrhythmogenic right ventricular cardiomyopathy
* ''B''rugada syndrome
* ''C'' Subarachnoid haemorrhage
* ''D''igoxin toxicity
* Pulmonary ''E''mbolism ('S1Q3T3')
---
>MI causes both Peaked and Inverted T waves
---
>Inverted ABCDE
Ecstasy (MDMA, 3,4-Methylenedioxymethamphetamine) use became popular in the 1990's during the emergence of dance music culture
Clinical features
* neurological: agitation, anxiety, confusion, ataxia
* cardiovascular: tachycardia, hypertension
* hyponatraemia
* hyperthermia
* rhabdomyolysis
Management
* supportive
* dantrolene may be used for hyperthermia if simple measures fail
!!Vitals
---
Vitals:<br>
NEWS
CC:
HPI:
ROS-non significant
PMH:
Surgeries: none
Hospitalizations:
Allergies:
Current Meds:
Social:<br>
Smoking-none<br>
Alcohol-none<br>
Illicit drug abuse-none<br>
Works as , lives with, mobilizes with<br>
OE: GCS 15/15<br>
HEENT-<br>
Chest- Clear B/L<br>
CVS-S1+S2+0<br>
Abd-SNT<br>
Neuro/Psych-No focal neurology<br>
Extremities-no edema/rash/calf tenderness<br>
VBG-non significant<br>
ECG-NSR<br>
Bloods-non significant<br>
XR Chest-non significant<br>
Impression:
D/W Dr. , advised:<br>
1.<br>
2.Discharge home with safety netting<br>
D/W
---
Initial History
Reasons for visit:
HPI
PMH
Hospitalizations/Procedures
Current Meds
Allergies
Vaccinations
Family History: Father has HTN. Mother in good health.
Social History
Marital/Family: Single. Lives in an apartment with 3 other room mates.
Sex
Personal habits-smoke/alcohol/illicit drugs
Occupational/Educational
Recreational: Enjoys racing cars
Mobility
ROS:
General
Skin
HEENT
Cardiorespiratory
GI
GU
Neuropsychiatric
PE
General appearance: Well developed, moderately built, in moderate apparent distress
Skin: Normal skin turgor. No nodules or other lesions. Hair and nails are normal.
Breast :Nipples normal. No masses
Lymph Nodes: No abnormal lymph nodes
HEENT/Neck: Normocephalic. Vision normal. Eyes, including fundoscopic exam normal. Hearing normal. Ears, including pinnae, external auditory canals, and tympanic membranes, normal. Nose and mouth normal. Pharynx normal. Neck supple; no masses or bruits; thyroid normal.
Chest: Chest wall normal, diaphragm and chest move equally and symmetrically with respiration. No abnormality on percussion or auscultation
CVS: S1 and S2 normal. No murmurs, rubs, gallops, or extra sounds. Central and Peripheral pulses normal. No jugular venous distension. Blood pressure equal in both arms.
Abd: Bowel sounds normal. No bruits. Soft, Non Tender. No guarding/rigidity/rebound tenderness. Liver and spleen are not palpable. No other abdominal masses or hernias.
Genital: Normal labia. No vaginal or cervical lesions. Uterus not enlarged. No adnexal masses or tenderness
Normal external genitalia
Rectal: Sphincter tone normal. No masses or abnormalities. Stool brown; No occult blood.
Prostate normal
Extremities/Spine: Extremities symmetric without deformity, cyanosis or clubbing. No edema. Peripheral pulses normal. No joint deformity or warmth. Full range of motion. Spine examination normal.
Neuro/Psych: Mental status normal. Alert, Orientedx4. GCS 15/15. Findings on CN, Motor and sensory examinations normal. Cerebellar function normal. Deep tendon reflexes normal.
ECG
Rhythm
Axis
P waves
QRS complex
ST-T waves
Other findings
Interpretation
!!!<center>''EDEMA''</center>
<hr>
* Generalised: Heart failure, cirrhosis, renal failure and nephrotic syndrome
* Local: venous and lymphatic disease
* Any H/O CAD, HTN, alcohol, hepatic or renal disease?
* Where is the edema located?
* Associated with SOB: Left heart failure and pulmonary edema?
* Those with ascites may have cirrhosis
* Those with only peripheral edema may have right-sided heart failure, pericardial disease, renal disease, or local venous or lymphatic disease.
* Is the edema intermittent or persistent? Intermittent edema is a common premenstrual symptom.
* Pulmonary edema: SOB + orthopnea.
* Chest pain: acute MI
* Non Pitting edema: lymphatic obstruction or hypothyroidism.
* Nephrotic syndrome: periorbital and peripheral edema and occasionally ascites.
* Drug-induced edema?
* Acute Unilateral limb edema: DVT?
* Filariasis?
* Admit and start protocol
<div class="figure"><div class="ttl">Major causes of edema by primary mechanism</div><div class="cntnt"><table cellspacing="0"><tbody> <tr> <td class="subtitle1_single">Increased capillary hydraulic pressure</td> </tr> <tr> <td class="indent1"><strong>Increased plasma volume due to renal sodium retention</strong></td> </tr> <tr> <td class="indent2">Heart failure, including cor pulmonale</td> </tr> <tr> <td class="indent2">Primary renal sodium retention</td> </tr> <tr> <td class="indent3"> <ul> <li>Renal disease, including the nephrotic syndrome </li> </ul> </td> </tr> <tr> <td class="indent3"> <ul> <li>Drugs:* Nonsteroidal antiinflammatory drugs (NSAIDs), glucocorticoids, fludrocortisone, thiazolidinediones (glitazones), insulins, estrogens, progestins, androgens, testosterone, aromatase inhibitors, tamoxifen; and by multiple mechanisms: vasodilators (hydralazine, minoxidil, diazoxide) and calcium channel blockers (particularly dihydropyridines [ie, amlodipine, nifedipine]); also refer to "Arteriolar vasodilation" below </li> </ul> </td> </tr> <tr> <td class="indent3"> <ul> <li>Refeeding edema </li> </ul> </td> </tr> <tr> <td class="indent3"> <ul> <li>Early hepatic cirrhosis </li> </ul> </td> </tr> <tr> <td class="indent2">Pregnancy and premenstrual edema</td> </tr> <tr> <td class="indent2">Idiopathic edema, when diuretic induced</td> </tr> <tr> <td class="indent2">Sodium or fluid overload: Parenteral antibiotics or other drugs with large amounts of sodium, sodium bicarbonate, or excessive or overly rapid fluid replacement</td> </tr> <tr> <td class="indent1"><strong>Venous obstruction or insufficiency</strong></td> </tr> <tr> <td class="indent2">Cirrhosis or hepatic venous obstruction</td> </tr> <tr> <td class="indent2">Acute pulmonary edema</td> </tr> <tr> <td class="indent2">Local venous obstruction</td> </tr> <tr> <td class="indent3"> <ul> <li>Venous thrombosis </li> </ul> </td> </tr> <tr> <td class="indent3"> <ul> <li>Venous stenosis </li> </ul> </td> </tr> <tr> <td class="indent2">Chronic venous insufficiency – Post-thrombotic syndrome</td> </tr> <tr> <td class="indent1"><strong>Arteriolar vasodilation</strong></td> </tr> <tr> <td class="indent2">Drugs:* Frequent – Vasodilators (hydralazine, minoxidil, diazoxide), dihydropyridine calcium channel blockers; less frequent – alpha1 blockers, sympatholytics (ie, methyldopa), nondihydropyridine calcium channel blockers<sup>[1]</sup></td> </tr> <tr class="divider_bottom"> <td class="indent2">Idiopathic edema (?)</td> </tr> <tr> <td class="subtitle1_single">Hypoalbuminemia</td> </tr> <tr> <td class="indent1"><strong>Protein loss</strong></td> </tr> <tr> <td class="indent2">Nephrotic syndrome</td> </tr> <tr> <td class="indent2">Protein-losing enteropathy</td> </tr> <tr> <td class="indent1"><strong>Reduced albumin synthesis</strong></td> </tr> <tr> <td class="indent2">Liver disease</td> </tr> <tr class="divider_bottom"> <td class="indent2">Malnutrition</td> </tr> <tr> <td class="subtitle1_single">Increased capillary permeability</td> </tr> <tr> <td class="indent1">Idiopathic edema</td> </tr> <tr> <td class="indent1">Burns</td> </tr> <tr> <td class="indent1">Trauma</td> </tr> <tr> <td class="indent1">Inflammation or sepsis</td> </tr> <tr> <td class="indent1">Allergic reactions, including certain forms of angioedema</td> </tr> <tr> <td class="indent1">Acute respiratory distress syndrome</td> </tr> <tr> <td class="indent1">Diabetes mellitus</td> </tr> <tr> <td class="indent1">Interleukin 2 therapy</td> </tr> <tr class="divider_bottom"> <td class="indent1">Malignant ascites</td> </tr> <tr> <td class="subtitle1_single">Lymphatic obstruction or increased interstitial oncotic pressure</td> </tr> <tr> <td class="indent1">Lymph node dissection</td> </tr> <tr> <td class="indent1">Nodal enlargement due to malignancy</td> </tr> <tr> <td class="indent1">Hypothyroidism</td> </tr> <tr class="divider_bottom"> <td class="indent1">Malignant ascites</td> </tr> <tr> <td class="subtitle1_single">Other drugs* (uncertain mechanism)</td> </tr> <tr> <td class="indent1">Anticonvulsant: Gabapentin, pregabalin</td> </tr> <tr> <td class="indent1">Antineoplastic: Docetaxel, cisplatin</td> </tr> <tr> <td class="indent1">Antiparkinson: Pramipexole, ropinirole</td> </tr> </tbody></table></div><div class="graphic_footnotes">* Patients with decreased cardiac output, preexisting renal insufficiency, and/or receiving higher doses are more likely to experience edema and edema-associated adverse events. This is not a complete list of drugs associated with edema. For additional information, refer to the Lexicomp individual drug monographs included with UpToDate.</div><div class="graphic_reference">Reference:
<ol>
<li>Messerli FH. Vasodilatory edema: A common side effect of antihypertensive therapy. Curr Cardiol Rep 2002; 4(6):479.</li>
</ol></div><div id="graphicVersion">Graphic 53550 Version 12.0</div></div>
Ehler-Danlos syndrome is an autosomal dominant connective tissue disorder that mostly affects type III collagen. This results in the tissue being more elastic than normal leading to joint hypermobility and increased elasticity of the skin.
Features and complications
* elastic, fragile skin
* joint hypermobility: recurrent joint dislocation
* easy bruising
* aortic regurgitation, mitral valve prolapse and aortic dissection
* subarachnoid haemorrhage
* angioid retinal streaks
All woman who are taking an enzyme-inducing drug (EID) (carbamazepine is an example of an EID) should be advised to use a reliable contraceptive that is unaffected by EIDs.
Examples of contraceptives that are unaffected by EIDs are:
* Copper intrauterine device
* Progesterone injection (Depo-provera)
* Mirena intrauterine system
;Considerations
* The copper intra-uterine device is usually the preferred option, as it is a non-hormonal method.
* If the patient is obese, the contraceptive injection (Depo-Provera) would not be the most suitable option. This is because it is associated with weight gain (2-3kg over 1 year).
* In patients on EIDs who wish to take the COCP (providing there are no contraindications) it is important to inform them that the effectiveness is decreased and there is an increased risk of pregnancy.
* It is recommended that the dose of oestrogen is increased to 50mcg with no pill-free interval, or reduced to 4 days from 7 days (to reduce the chance of ovulation). In addition, barrier methods would also be advised. This applies when the patient is on an EID and for 4 weeks after stopping.
* In patients on EIDs who wish to take the POP or progesterone implant, then additional barrier contraception would be required while using EIDs and for 4 weeks after stopping.
*`Rifampicin and Rifabutin are potent EIDs and require longer periods of using barrier contraception after stopping (8 weeks)`.
*If emergency contraception is required
** the copper intra-uterine device is again the best option.
** If levonorgestrel (Levonelle) is used, then double the standard dose is recommended.
** Ulipristal acetate (ellaOne) is not recommended.
* Confirm the patient details
* Check standardization 10mmx5mm positive wave
* Rate(tachy>=100 or brady<=60) & Rhythm(Sinus with P for every QRS)
* Axis (check for predominantly positive waves in leads I & II)
** ++ NORMAL -30 to +90
** +- LEFT -90 to -30
*** Confirm with SV1+RV6 >=35mm and ST straining(depression) in V5, V6
** -+ RIGHT 90 to -150
*** Confirm with RV12 >=7mm and persistent S wave(no decrease in size) from V1 to V6
** -- RIGHT SUPERIOR -90 to -150
** +/- +/1 INDETERMINATE
* 4 Causes of tall R wave in V1
** RVH/RBBB
** Posterior MI (Tall R wave and ST depression in V1-2)
** WPW
** Dextrocardia
* LVH Scoring (ECHO is >=5 points)
** R/S in any limb leads >20mm - 3 points
** S in V1/V2 >30mm - 3 points
** R in V5/V6 >30mm - 3 points
** Typical ST/T ischemic changes - 3 points
** Left Atrial Enlargement(on echo?) - 3 points
** Left Axis Deviation - 2 points
** QRS > 0.09s - 1 point
* Tomb stone ST elevation
** ST elevation all over, i.e., in inferior leads (II, III, aVF) and lateral leads (I, aVL, V5, V6) with reciprocal changes in V1,aVR
** Looks like a tomb stone
[[EKG changes due to Electrolyte abnormalities|Electrolytes in EKG]]
{{Electrolytes in EKG}}
* Pathological Q wave
** Not just in one single lead(should be present with other leads with similar axis)
** Significant if even smaller size if present in leads of similar axis
** Slightly wide
** At least 1/4 of length of R wave
** Non pathological in some Obese people (disappears if they are asked to take deep breath while taking EKG)
** J point (meeting point of Q with ST segment) rise could be seen in MI
* P wave abnormalities with Bifid P wave
** P Mitrale in Left Atrial enlargement with >2.5mm horizontal change on Left half of P wave
** P Pulmonale is Right Atrial enlargement with >2.5mm vertical change on Left half of P wave
<div id="notecontent">The table below details some of the characteristic features of conditions causing elbow pain:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Condition</th><th>Notes</th></tr></thead><tbody><tr><td><b>Lateral epicondylitis (tennis elbow)</b></td><td>Features<br><ul><li>pain and tenderness localised to the lateral epicondyle</li><li>pain worse on resisted wrist extension with the elbow extended or supination of the forearm with the elbow extended</li><li>episodes typically last between 6 months and 2 years. Patients tend to have acute pain for 6-12 weeks</li></ul></td></tr><tr><td><b>Medial epicondylitis (golfer's elbow)</b></td><td>Features<br><ul><li>pain and tenderness localised to the medial epicondyle</li><li>pain is aggravated by wrist flexion and pronation</li><li>symptoms may be accompanied by numbness / tingling in the 4th and 5th finger due to ulnar nerve involvement</li></ul></td></tr><tr><td><b>Radial tunnel syndrome</b></td><td>Most commonly due to compression of the posterior interosseous branch of the radial nerve. It is thought to be a result of overuse.<br><br>Features<br><ul><li>symptoms are similar to lateral epicondylitis making it difficult to diagnose</li><li>however, the pain tends to be around 4-5 cm distal to the lateral epicondyle</li><li>symptoms may be worsened by extending the elbow and pronating the forearm</li></ul></td></tr><tr><td><b>Cubital tunnel syndrome</b></td><td>Due to the compression of the ulnar nerve.<br><br>Features<br><ul><li>initially intermittent tingling in the 4th and 5th finger</li><li>may be worse when the elbow is resting on a firm surface or flexed for extended periods</li><li>later numbness in the 4th and 5th finger with associated weakness</li></ul></td></tr><tr><td><b>Olecranon bursitis</b></td><td>Swelling over the posterior aspect of the elbow. There may be associated pain, warmth and erythema. It typically affects middle-aged male patients.</td></tr></tbody></table></div></div>
* Hyperkalemia
** Tall tented T waves 5.5-6.5
** Absent P waves 6.5-7
** Increased PR interval
** Wide QRS 7-8
** Sine waves, VT/VF, Asystole 8-10
* Hypokalemia
** U waves (P wave like waves after T and before P wave)
** Flat T waves
** ST depression
* Hypercalcemia
** Shortened QT interval
*Hypocalcemia
** Intermittent prolongation of QT intervals
<div class="figure"><div class="ttl">Causes of an elevated serum lactate dehydrogenase level</div><div class="cntnt"><table cellspacing="0"><colgroup width="30%"></colgroup><colgroup width="70%"></colgroup> <tbody> <tr class="divider_bottom"> <td><strong>Cardiac</strong></td> <td>Myocyte injury <ul class="decimal_heading"> <li>Demand ischemia </li> <li>Trauma, cardiovascular surgery </li> <li>Toxins </li> <li>Infection (myocarditis, rheumatic fever) </li> <li>Drugs (alcohol, chemotherapy, cocaine, methysergide, carbon monoxide) </li> </ul> <p> </p> Hepatic congestion <ul class="decimal_heading"> <li>Heart failure </li> </ul> <p> </p> Hemolysis <ul class="decimal_heading"> <li>Prosthetic valves </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Central nervous system disorders</strong></td> <td> <ul> <li>Bacterial meningitis </li> <li>Cerebral hemorrhage </li> <li>Cerebral venous thrombosis </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Drug-induced</strong></td> <td> <ul> <li>Neuroleptic agents (neuroleptic malignant syndrome) </li> <li>Withdrawal of L-Dopa or dopamine agonist </li> <li>Serotonin syndrome </li> <li>Malignant hyperthermia </li> <li>Recreational drugs </li> <li>Myopathies (colchicine, antimalarials, cholesterol-lowering drugs, cocaine, alcohol, glucocorticoid) </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Endocrine</strong></td> <td> <ul> <li>Hypothyroidism </li> <li>Acromegaly </li> <li>Cushing's syndrome </li> <li>Diabetic muscle infarction </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Gastrointestinal</strong></td> <td> <ul> <li>Acute pancreatitis </li> <li>Intestinal obstruction </li> <li>Early acute hepatitis </li> <li>Ischemic hepatitis </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Hematologic</strong></td> <td>Hemolytic anemias <ul class="decimal_heading"> <li>Inherited (spherocytosis, sickle cell disease, deficiency of red blood cell enzymes) </li> <li>Acquired (microangiopathic hemolytic anemia, PNH, immune hemolysis) </li> </ul> <p> </p> Ineffective erythropoiesis <ul class="decimal_heading"> <li>Pernicious anemia, folic acid deficiency </li> <li>Iron deficiency </li> <li>Primary myelofibrosis </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Infection</strong></td> <td> <ul> <li>Pneumocystis pneumonia (late) </li> <li>Tuberculosis </li> <li>Malaria </li> <li>Parasitic </li> <li>Legionnaires disease </li> <li>Histoplasmosis </li> <li>Toxoplasmosis </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Malignancy</strong></td> <td> <ul> <li>Leukemias </li> <li>Lymphomas </li> <li>Solid tumors (testicular germ cell tumors) </li> <li>Tumor lysis syndrome (large tumor burden) </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Neuromuscular</strong></td> <td> <ul> <li>Myopathies (inherited, acquired, drug) </li> <li>Periodic paralyses </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Pregnancy</strong></td> <td> <ul> <li>Preeclampsia </li> <li>Adnexal mass in pregnancy </li> <li>HELLP syndrome </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Pulmonary</strong></td> <td> <ul> <li>Pulmonary embolism, infarction </li> <li>Pulmonary alveolar proteinosis </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Renal</strong></td> <td> <ul> <li>Renal infarction </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Rheumatologic</strong></td> <td> <ul> <li>Dermatomyositis </li> <li>MCTD </li> <li>Rheumatoid arthritis </li> <li>Scleroderma </li> <li>Sjögren's syndrome </li> <li>SLE </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Trauma</strong></td> <td> <ul> <li>Rhabdomyolysis </li> <li>Surgery </li> </ul> </td> </tr> <tr class="divider_bottom"> <td><strong>Vasculitis</strong></td> <td> <ul> <li>Polyarteritis nodosa </li> <li>Eosinophilic granulomatosis with polyangiitis (Churg-Strauss vasculitis) </li> <li>Granulomatosis with polyangiitis [Wegener's] </li> <li>Behçet's syndrome</li> <li>Sarcoidosis </li> </ul> </td> </tr> <tr> <td><strong>Idiosyncratic LDH elevation</strong></td> <td>The presence of macro-LDH (LDH combined with an immunoglobulin), not associated with any symptoms or particular disease</td> </tr> </tbody></table></div><div class="graphic_footnotes">PNH: paroxysmal nocturnal hemoglobinuria; HELLP: hemolysis, elevated liver enzymes, low platelets; MCTD: mixed connective tissue disease; SLE: systemic lupus erythematosus; LDH: lactate dehydrogenase.</div><div id="graphicVersion">Graphic 98392 Version 2.0</div></div>
<div id="notecontent">There are two methods currently available in the UK:<br><br><b>Emergency hormonal contraception</b><br><br>There are now two methods of emergency hormonal contraception ('emergency pill', 'morning-after pill'); levonorgestrel and ulipristal, a progesterone receptor modulator.<br><br>Levonorgestrel<br><ul><li>mode of action not fully understood - acts both to stop ovulation and inhibit implantation</li><li>should be taken as soon as possible - efficacy decreases with time</li><li>must be taken within <span id="concept_popover_id_10563" class="concept concept-0 trigger-link" data-cid="10563" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10563'>You've never been tested on this concept</div><br><div id='div_concept_rating10563' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(35,255,0)'>Importance: <b>93</b></span> </div>" data-original-title="Levonorgestrel must be taken within 72 hours of UPSI"> 72 hours of unprotected sexual intercourse (UPSI)</span>*</li><li>single dose of levonorgestrel 1.5mg (a progesterone)<ul><li><span class="concept" data-cid="8884">the dose should be doubled for those with a BMI >26 or weight over 70kg</span></li></ul></li><li>84% effective is used within 72 hours of UPSI</li><li>levonorgestrel is safe and well-tolerated. Disturbance of the current menstrual cycle is seen in a significant minority of women. Vomiting occurs in around 1%</li><li>if <span id="concept_popover_id_10564" class="concept concept-0 trigger-link" data-cid="10564" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10564'>You've never been tested on this concept</div><br><div id='div_concept_rating10564' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(61,255,0)'>Importance: <b>88</b></span> </div>" data-original-title="If a patient vomits within 3 hours of taking the levonorgestrel, she should take another dose">vomiting occurs within 3 hours then the dose should be repeated</span></li><li><span class="concept" data-cid="3507">can be used more than once in a menstrual cycle if clinically indicated</span></li><li><span class="concept" data-cid="10195">hormonal contraception can be started immediately after using levornogestrel (Levonelle) for emergency contraception</span></li></ul><br><br>Ulipristal<br><ul><li>a <span class="concept" data-cid="10582">selective progesterone receptor modulator</span> currently marketed as EllaOne. The primary mode of action is thought to be inhibition of ovulation</li><li>30mg oral dose taken as soon as possible, no later than <span class="concept" data-cid="244">120 hours after intercourse</span></li><li>concomitant use with levonorgestrel is not recommended</li><li>Ulipristal may reduce the effectiveness of hormonal contraception. <span class="concept" data-cid="3198">Contraception with the pill, patch or ring should be started, or restarted, 5 days after having ulipristal</span>. Barrier methods should be used during this period</li><li><span id="concept_popover_id_2365" class="concept concept-0 trigger-link" data-cid="2365" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2365'>You've never been tested on this concept</div><br><div id='div_concept_rating2365' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(76,255,0)'>Importance: <b>85</b></span> </div>" data-original-title="Ulipristal should be used with caution in patients with severe asthma">caution should be exercised in patients with severe asthma</span></li><li>repeated dosing within the same menstrual cycle was previously not recommended - however, this has now changed and <span class="concept" data-cid="3507">ulipristal can be used more than once in the same cycle</span></li><li>breastfeeding should be delayed for one week after taking ulipristal. There are no such restrictions on the use of levonorgestrel</li></ul><br><b>Intrauterine device (IUD)</b><br><ul><li>must be inserted within 5 days of UPSI, or</li><li>if a women presents after more than 5 days then <span id="concept_popover_id_7872" class="concept concept-3-u trigger-link" data-cid="7872" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7872'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating7872' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(35,255,0)'>Importance: <b>93</b></span> </div>" data-original-title="The copper intrauterine device can be inserted for emergency contraception within 5 days after the first unprotected sexual intercourse in a cycle, or within 5 days of the earliest estimated date of ovulation, whichever is later">an IUD may be fitted up to 5 days after the likely ovulation date</span></li><li>may inhibit fertilisation or implantation</li><li>prophylactic antibiotics may be given if the patient is considered to be at high-risk of sexually transmitted infection</li><li><span class="concept" data-cid="3195">is 99% effective regardless of where it is used in the cycle</span></li><li>may be left in-situ to provide long-term contraception. If the client wishes for the IUD to be removed it should be at least kept in until the next period</li></ul><br>*may be offered after this period as long as the client is aware of reduced effectiveness and unlicensed indication</div>
!!!Quick comparison: Contraceptives: time until effective
;Immediate
*IUD
;After 2 days
*progestogen only pill
;After 7 days
*Nexplanon (implantable contraceptive)
*combined oral contraceptive pill
*intrauterine system (e.g. Mirena)
*Depo Provera (injectable contraceptive)
<div id="notecontent">Endometriosis is a common condition characterised by the growth of ectopic endometrial tissue outside of the uterine cavity. Around 10% of women of a reproductive age have a degree of endometriosis.<br><br><span id="concept_popover_id_986" class="concept concept-0 trigger-link" data-cid="986" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative986'>You've never been tested on this concept</div><br><div id='div_concept_rating986' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(183,255,0)'>Importance: <b>64</b></span> </div>" data-original-title="The classic symptoms of endometriosis are pelvic pain, dysmenorrhoea, dyspareunia and subfertility">Clinical features</span><br><ul><li>chronic pelvic pain</li><li>dysmenorrhoea - pain often starts days before bleeding</li><li>deep dyspareunia </li><li>subfertility</li><li>non-gynaecological: urinary symptoms e.g. dysuria, urgency, haematuria. Dyschezia (painful bowel movements)</li><li>on pelvic examination reduced organ mobility, tender nodularity in the posterior vaginal fornix and visible vaginal endometriotic lesions may be seen</li></ul><br>Investigation<br><ul><li><b><span class="concept" data-cid="985">laparoscopy</span> is the gold-standard investigation</b></li><li>there is little role for investigation in primary care (e.g. ultrasound)- if the symptoms are significant the patient should be referred for a definitive diagnosis </li></ul><br>Management depends on clinical features - there is poor correlation between laparoscopic findings and severity of symptoms. NICE published guidelines in 2017:<br><ul><li><b>NSAIDs and/or paracetamol</b> are the recommended first-line treatments for symptomatic relief</li><li>if analgesia does help then hormonal treatments such as the <b>combined oral contraceptive pill or progestogens</b> e.g. medroxyprogesterone acetate should be tried</li></ul><br>If analgesia/hormonal treatment does not improve symptoms or if fertility is a priority the patient should be referred to secondary care. Secondary treatments include:<br><ul><li>GnRH analogues - said to induce a 'pseudomenopause' due to the low oestrogen levels</li><li>drug therapy unfortunately does not seem to have a significant impact on fertility rates</li><li>surgery: some treatments such as laparoscopic excision and laser treatment of endometriotic ovarian cysts may improve fertility</li></ul></div>
!!!<center>''ENDOMETRITIS''</center>
<hr>
* Same as PID, no need of Doxy
!!!<center>''TYPHOID FEVER''</center>
<hr>
* OP: Cefixime 20mg/kg/d for 14 days OR Azithr 500 mg BD for 7 ds.
* IP: Ceftriaxone 2 g IV BD 2 wks +/-Azithro 500 mg BD 7 ds; Alt: Bactrim DS BD 2 wks
<div id="notecontent">Eosinophilic oesophagitis is characterised by an allergic inflammation of the oesophagus. An oesophageal biopsy will show dense infiltrate of eosinophils in the epithelium. Although this disease is relatively poorly understood, it is thought to be caused by an allergic reaction to ingested food. The resulting oesophageal inflammation results in pain and dysphagia, amongst other symptoms.<br><br>Epidemiology: <br><ul><li>3:1 male:female ratio </li><li>Average age at diagnosis is 30-50 years old</li></ul><br>Risk factors for developing eosinophilic oesophagitis:<br><ul><li><span class="concept" data-cid="9898">Allergies/ asthma: suffering from food/ environmental allergies or atopic dermatitis and asthma increases the risk of diagnosis</span></li><li>Male sex</li><li>Family history of eosinophilic oesophagitis or allergies</li><li>Caucasian race</li><li>Age between 30-50</li><li>Coexisting autoimmune disease e.g. coeliac disease</li></ul><br>Patients typically present with a subacute onset of: <br><ul><li>In children, disease presents with failure to thrive due to food refusal</li><li>Adults often experience <span class="concept" data-cid="9898">dysphagia</span>, strictures/ fibrosis (56%), food impaction (55%), regurgitation/ vomiting, anorexia </li></ul><br>Signs:<br><ul><li>Signs are minimal and suspicion of this diagnosis relies mainly on the reported symptoms, past medical history and exclusion of other differential diagnoses e.g. GORD</li><li>Weight loss</li></ul><br>Investigations: <br><ul><li>Endoscopy: diagnosis can only be made on the histological analysis of an oesophageal biopsy. There must be more than 15 eosinophils per high power microscopy field to diagnose the condition. Other findings on endoscopy include reduced vasculature, thick mucosa, `linear mucosal furrows`, strictures and laryngeal oedema. Histologically, the diagnosis is made more likely in the presence of epithelial desquamation, eosinophilic microabscesses, and abnormally long papillae </li><li>PPI trial: persistence of eosinophilia and no improvement of symptoms after trialling a proton pump inhibitor. This can help the clinician differentiate between eosinophilic oesophagitis and GORD, which can be a tricky task </li></ul><br>As eosinophilic oesophagitis is a relatively little-known condition that is still widely misunderstood, it is recommended that patients are referred to a gastroenterologist to receive specialist care. <br><br><span class="concept" data-cid="9110">Management</span>:<br> - Dietary modification: This is both effective in adults and children. There are three methods available to begin excluding food from the diet. The elemental diet (involves taking an amino acid mixture for six weeks), exclusion of six food groups (involves avoiding foods commonly associated with allergy e.g. nuts, soy, egg, seafood), and the targeted elimination diet (involves excluding foods that have been identified as allergy-triggering during allergy testing). It is important to involve a dietitian when attempting to modify diet. <br><ul><li>Topical steroids e.g. fluticasone and budesonide are options when dietary modification fails. This requires the patient to swallow solutions of the steroid to line the oesophagus. This should be done for eight weeks before being reassessed </li><li>Oesophageal dilatation: 56% of patients require this at some point in their treatment to reduce the symptoms associated with oesophageal strictures </li></ul><br>Complications:<br><ul><li>Strictures of the oesophagus (56%)</li><li>Impaction: 55% of patients experience this, and 38% of these require endoscopic removal of the impaction </li><li>Mallory-Weiss tears</li></ul><br>Prognosis:<br><ul><li>Eosinophilic oesophagitis is a chronic condition. It is recognised that this condition is likely to come back in patients that stop treatment so it important to gain a good balance of dietary modifications and additional pharmacological treatments when necessary.</li></ul></div>
`Cytomegalovirus esophagitis is commonly seen in immunocompromised patient and present as linear ulcer in endoscopy.`
<div id="notecontent">Epididymo-orchitis describes an infection of the epididymis +/- testes resulting in pain and swelling. It is most commonly caused by local spread of infections from the genital tract (such as <span class="concept" data-cid="1727"><i>Chlamydia trachomatis</i></span> and <i>Neisseria gonorrhoeae</i>) or the bladder.<br><br><b>The most important differential diagnosis is testicular torsion. This needs to be excluded urgently to prevent ischaemia of the testicle.</b><br><br>Features<br><ul><li>unilateral testicular pain and swelling</li><li>urethral discharge may be present, but urethritis is often asymptomatic </li><li>factors suggesting testicular torsion include patients < 20 years, severe pain and an acute onset</li></ul><br>Management<br><ul><li>the British Association for Sexual Health and HIV (BASHH) produced guidelines in 2010</li><li>if the organism is unknown BASHH recommend: ceftriaxone 500mg intramuscularly single dose, plus doxycycline 100mg by mouth twice daily for 10-14 days </li><li>further investigations following treatment are recommended to exclude any underlying structural abnormalities</li></ul></div>
---
!!!<center>''EPIDIDYMITIS''</center>
<hr>
* Doxy 200 BD 3ds, then 100 BD 11 ds OR Levoflox 500 OD 10ds OR Oflox 300 BD 10ds
<div id="body_content">
The basic classification of epilepsy has changed in recent years. The new basic seizure classification is based on 3 key features:<br><ul><li>1. Where seizures begin in the brain</li><li>2. Level of awareness during a seizure (important as can affect safety during seizure)</li><li>3. Other features of seizures</li></ul><br>Focal seizures<br><ul><li>previously termed partial seizures</li><li>these start in a specific area, on one side of the brain</li><li>the <span class="concept" data-cid="1795">level of awareness</span> can vary in focal seizures. The terms <span class="concept" data-cid="8721">focal aware</span> (previously termed 'simple partial'), <span class="concept" data-cid="8720">focal impaired awareness</span> (previously termed 'complex partial') and awareness unknown are used to further describe focal seizures</li><li>further to this, focal seizures can be classified as being motor (e.g. Jacksonian march), non-motor (e.g. déjà vu, jamais vu; ) or having other features such as aura</li></ul><br>Generalised<br><ul><li>these engage or involve networks on both sides of the brain at the onset</li><li>consciousness lost immediately. The level of awareness in the above classification is therefore not needed, as all patients lose consciousness</li><li>generalised seizures can be further subdivided into motor (e.g. tonic-clonic) and non-motor (e.g. absence)</li><li>specific types include:</li><li>→ <span class="concept" data-cid="8722">tonic-clonic (grand mal)</span></li><li>→ tonic</li><li>→ clonic</li><li>→ <span class="concept" data-cid="8723">typical absence (petit mal)</span></li><li>→ <span class="concept" data-cid="8725">atonic</span></li></ul><br>Unknown onset<br><ul><li>this termed is reserved for when the origin of the seizure is unknown</li></ul><br>Focal to bilateral seizure<br><ul><li>starts on one side of the brain in a specific area before spreading to both lobes</li><li>previously termed secondary generalized seizures</li></ul></div>
;There are a number of factors to consider for women with epilepsy:
* the effect of the contraceptive on the effectiveness of the anti-epileptic medication
* the effect of the anti-epileptic on the effectiveness of the contraceptive
* the potential teratogenic effects of the anti-epileptic if the woman becomes pregnant
Given the points above, the Faculty of Sexual & Reproductive Healthcare (FSRH) recommend the consistent use of condoms, in addition to other forms of contraception.
;For women taking phenytoin,carbamazepine, barbiturates, primidone, topiramate, oxcarbazepine:
* UKMEC 3: the COCP and POP
* UKMEC 2: implant
* UKMEC 1: Depo-Provera, IUD, IUS
;For LamoTrigine:
* UKMEC 3: the COCP
* UKMEC 1: POP, implant, Depo-Provera, IUD, IUS
If a COCP is chosen then it should contain a minimum of 30 µg of ethinylestradiol.
Most neurologists now start antiepileptics following a second epileptic seizure. NICE guidelines suggest starting antiepileptics after the first seizure if any of the following are present:
* the patient has a neurological deficit
* brain imaging shows a structural abnormality
* the EEG shows unequivocal epileptic activity
* the patient or their family or carers consider the risk of having a further seizure unacceptable
Sodium valproate is considered the first line treatment for patients with generalised seizures with carbamazepine used for focal seizures.
;Generalised tonic-clonic seizures
* sodium valproate
* second line: lamotrigine, carbamazepine
;Absence seizures* (Petit mal)
* sodium valproate or ethosuximide
* sodium valproate particularly effective if co-existent tonic-clonic seizures in primary generalised epilepsy
;Myoclonic seizures**
* sodium valproate
* second line: clonazepam, lamotrigine
;Focal seizures
* carbamazepine or lamotrigine
* second line: levetiracetam, oxcarbazepine or sodium valproate
*carbamazepine may exacerbate absence seizures
**carbamazepine may exacerbate myoclonic seizures
---
>DONT drive MY CAR in my ABSENCE - No Carbamazepine in Myoclonic & Absence seizures
---
> EpiLepsyRx blasts Marrow
*PhenyToin: AplasticAnemia
*ValProate: ThromboCytopenia
*CarbamaZapine: Leucopenia - AgranuloCytosis
---
<hr><center>''EPINEPHRINE/ADRENALINE''</center><hr>
<center>''Adult Dosage''</center><hr>
''Asystole/pulseless arrest, pulseless VT/VF:''
* I.V., I.O.: 1 mg every 3-5 minutes until return of spontaneous circulation;
''Endotracheal:''
* 2-2.5 mg every 3-5 minutes until I.V./I.O access established or return of spontaneous circulation; dilute in 5-10 mL NS or sterile water.
''Bradycardia (symptomatic; unresponsive to atropine or pacing):''
* ''I.V. infusion:'' 2-10 mcg/minute or 0.1-0.5 mcg/kg/minute (7-35 mcg/minute in a 70 kg patient); titrate to desired effect (ACLS, 2010)
''Bronchodilator:''
* ''SubQ:'' 0.3-0.5 mg (1:1000 [1 mg/mL] solution) every 20 minutes for 3 doses Nebulization: Add 0.5 mL (~10 drops) to nebulizer; 1-3 inhalations up to every 3 hours if needed
''Hypersensitivity reaction:''
* ''I.M., SubQ:'' 0.2-0.5 mg (1:1000 [1 mg/mL] solution) every 5-15 minutes in the absence of clinical improvement
*''I.V.:'' 0.1 mg (1:10,000 [0.1 mg/mL] solution) over 5 minutes; may infuse at 1-4 mcg/minute to prevent the need to repeat injections frequently or may initiate with an infusion at 5-15 mcg/minute (with crystalloid administration) (ACLS, 2010; Brown, 2004).
''Hypotension/shock, severe and fluid resistant:''
* ''I.V. infusion:'' Initial: 0.1-0.5 mcg/kg/minute (7-35 mcg/minute in a 70 kg patient); titrate to desired response
<hr><center>''Pediatric Dosage''</center><hr>
''Asystole/pulseless arrest, pulseless VT/VF (after failed defibrillation attempts):''
* Infants and Children: I.V., I.O.: 0.01 mg/kg (0.1 mL/kg of 1:10,000 [0.1 mg/mL] solution) (maximum single dose: 1 mg) every 3-5 minutes until return of spontaneous circulation
''Endotracheal:''
* 0.1 mg/kg (0.1 mL/kg of 1:1000 [1 mg/mL] solution) (maximum single dose: 2.5 mg) every 3-5 minutes until I.V./I.O access established or return of spontaneous circulation. Flush with 5 mL of NS immediately after administration.
''Postresuscitation infusion to maintain cardiac output or stabilize:''
* ''I.V., I.O.:'' 0.1-1 mcg/kg/minute; Bradycardia (symptomatic; unresponsive to atropine or pacing): Infants and Children: I.V., I.O.: 0.01 mg/kg (0.1 mL/kg of 1:10,000 [0.1 mg/mL] solution) (maximum single dose: 1 mg) every 3-5 minutes as needed
''Continuous infusion:''
* ''I.V., I.O.:'' 0.1-1 mcg/kg/minute
''Bronchodilator:''
* ''SubQ: Infants and Children:'' 0.01 mg/kg (0.01 mL/kg of 1:1000 [1 mg/mL] solution) (maximum single dose: 0.5 mg) every 20 minutes for 3 doses
''Hypersensitivity reaction:''
* ''Infants and Children:'' Note: I.M. administration in the anterolateral aspect of the middle third of the thigh I.M.: 0.01 mg/kg (0.01 mL/kg of 1:1000 [1 mg/mL] solution) (maximum single dose: 0.3 mg) every 5-15 minutes;
''Hypotension/shock, fluid-resistant:''
* ''Continuous I.V. infusion:'' 0.1-1 mcg/kg/minute; doses up to 5 mcg/kg/minute may rarely be necessary
Features
* RedEye
* classically not painful (in comparison to scleritis), but mild pain may be present
* watering and mild photophobia may be present
* in episcleritis, the injected vessels are mobile when gentle pressure is applied on the sclera. In scleritis, vessels are deeper, hence do not move
* phenylephrine drops may be used to differentiate between episcleritis and scleritis. Phenylephrine blanches the conjunctival and episcleral vessels but not the scleral vessels. If the eye redness improves after phenylephrine a diagnosis of episcleritis can be made
Approximately 50% of cases are bilateral.
Management
* conservative
* artificial tears may sometimes be used
---
* AnteriorUveitis cause photophobia - blurred vision - RedEye - irregular/small pupil - hypopyon - ciliary flush
* KeraTitis may mimic AnteriorUveitis but pupillary reaction is normal in KeraTitis
* ConjuctiVitis does not cause photophobia - does not affect pupils
* EpiScleritis does not affect visual acuity
* PosteriorUveitis causes floaters
---
The initial management of epistaxis is with good first aid - pinching the soft part of the nose and leaning forward. This compresses the most common bleeding point (Little's area) and ensures blood is not swallowed. Putting ice in the mouth may also help.
If this is unsuccessful in stopping bleeding, further management includes:
* topical local anaesthetic/adrenaline
* topical tranexamic acid
* cautery (silver nitrate, electrocautery)
* nasal packing
If all measures fail, surgical management (sphenopalatine artery ligation) is indicated.
---
<div id="notecontent">Epistaxis is split into anterior and posterior bleeds, whereby the former often has a visible source of bleeding and usually occurs due to an insult to the network of capillaries that form Kiesselbach’s Plexus. Posterior haemorrhages, on the other hand, tend to be more profuse and originate from deeper structures. They occur more frequently in older patients and confer a higher risk of aspiration and airway compromise.<br><br>While most cases of epistaxis tend to be benign and self-limiting, they may be an indicator of serious pathology. The most common cause is trauma to the nose- this can range from the insertion of foreign bodies, nose picking and nose blowing. Bleeding can also indicate platelet function disorders such as thrombocytopaenia, splenomegaly, leukaemia, Waldenstrom’s macroglobulinaemia and ITP- as these tend to be congenital, they often present earlier in life. In adolescent males, juvenile angiofibroma is a benign tumour may bleed as it is highly vascularised. If the nasal septum looks abraded or atrophied, inquire about drug use. This is because inhaled cocaine is a powerful vasoconstrictor and repeated use may result in obliteration of the septum. In the elderly, hereditary haemorrhagic telangiectasia may cause prolonged nasal bleeding. Granulomatosis with polyangiitis (Wegener’s) and pyogenic granuloma may also present with nosebleeds. <br><br><b>Management</b><br><br>If the patient is haemodynamically stable, bleeding can be controlled with first aid measures. This involves:<br><ul><li>Asking the patient to sit with their torso forward and their mouth open- avoid lying down unless they feel faint. This decreases blood flow to the nasopharynx and allows the patient to spit out any blood in their mouth. It also reduces the risk of aspirating blood.</li><li><span id="concept_popover_id_4310" class="concept concept-3-u trigger-link" data-cid="4310" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4310'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating4310' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(96,255,0)'>Importance: <b>81</b></span> </div>" data-original-title="Initial management for epistaxis is with adequate first aid - pinch the nasal ala (nostrils) firmly and lean forward for 20 minutes">Pinch the cartilaginous (soft) area of the nose firmly and consistently for at least 20 minutes</span> and ask the patient to breathe through their mouth. </li></ul><br>If first aid measures are successful, consider using a topical antiseptic such as <span class="concept" data-cid="10718">Naseptin (chlorhexidine and neomycin)</span> to reduce crusting and the risk of vestibulitis. Cautions to this include patients that have <span class="concept" data-cid="10717">peanut</span>, soy or neomycin allergies, and Mupirocin is a viable alternative.<br><br>Admission and follow up care may be considered in patients under if a comorbidity (e.g. coronary artery disease, or severe hypertension) is present, an underlying cause is suspected or if they are aged under 2 years (as underlying causes such as haemophilia or leukaemia are more likely in this age group).<br><br>If bleeding does not stop after 10-15 minutes of continuous pressure on the nose, consider cautery or packing. Cautery should be used if the source of the bleed is visible and cautery is tolerated- it is not so well-tolerated in younger children! Packing may be used if cautery is not viable or the bleeding point cannot be visualised. If the nose is packed in primary care, the patient should be admitted to hospital for review.<br><br>Cautery:<br><ul><li>Ask the patient to blow their nose in order to remove any clots. Be wary that bleeding may resume.</li><li>Use a topical local anaesthetic spray (e.g. Co-phenylcaine) and wait 3-4 minutes for it to take effect</li><li>Identify the bleeding point and apply the silver nitrate stick for 3-10 seconds until it becomes grey-white. Avoid touching areas which do not require treatment, and only cauterise one side of the septum as there is a risk of perforation.</li><li>Dab the area clean with a cotton bud and apply Naseptin or Muciprocin</li></ul><br>Packing:<br><ul><li>Anaesthetise with topical local anaesthetic spray (e.g. Co-phenylcaine) and wait for 3-4 minutes</li><li>Pack the patient’s nose while they are sitting with their head forward, following the manufacturer’s instructions</li><li>Pressure on the cartilage around the nostril can cause cosmetic changes and this should be reviewed after inserting the pack.</li><li>Examine the patient’s mouth and throat for any continuing bleeding, and consider packing the other nostril as this increases pressure on the septum and offending vessel.</li><li>Patients should be admitted to hospital for observation and review, and to ENT if available</li></ul><br>Patients that are haemodynamically unstable or compromised should be admitted to the emergency department- control bleeding with first aid measures in the interim. Patients with a bleed from an unknown or posterior source (i.e. the bleeding site cannot be located on speculum, bleeding from both nostrils or profuse) should be admitted to hospital.<br><br>Self-care advice involves reducing the risk of re-bleeding. Patients should be informed that blowing or picking the nose, heavy lifting, exercise, lying flat, drinking alcohol or hot drinks should be avoided. The same applies for patients who have just been cauterised, as any strain on the nostril may induce a re-bleed.</div>
---
!!!<center>''EPISTAXIS''</center>
<hr>
* No need for ordering coagulation studies routinely
* CBC, type and crossmatch for all patients with profuse bleeding.
* Secure airway
* Check vital and stabilize them
* Pinching the alae to stop a nosebleed
<center>
<img width=400 src="https://www.dropbox.com/s/gzg5helm9opihyo/epistaxis1.jpeg?raw=1">
</center>
* This position should be held continuously (without releasing any pressure) for at least 10 minutes
<center>
<img width=300 src="https://www.dropbox.com/s/xq64id13v9xt658/epistaxis2.jpeg?raw=1">
</center>
* He bends at the waist to minimize swallowing of blood and the risk of aspiration, and grasps his nasal alae in firm approximation. The patient should be encouraged not to check for active bleeding, but rather to hold constant pressure for at least five to ten minutes.
* Nasal packing should be done
* No routine abx for nasal packing
* Give abx in high risk pts
* Follow up with (ENT) specialist within 24-48 hrs
* Patients who continue to bleed after anterior packing most likely have a posterior bleed, and require posterior packing with a specially developed nasal balloon catheter or a Foley catheter.
* Most patients who require posterior packing should be hospitalized for observation and assessment of the need for further intervention with surgery or angiographic embolization.
| !EROSIVE ESOPHAGITIS DRUGS |<|
|Esomeprazole|Tab Nexpro/Nexium 20/40 mg OD , 4 wks, 1 hr before breakfast|
|Famotidine|Tab Famocid 20 mg BD, 6 wks|
|Lansoprazole|Cap Lanzol 30 mg OD for 8 wks, before breakfast|
|Omeprazole|Cap Omez 20 mg OD, 4 wks, before breakfast|
<div id="notecontent">Erythema multiforme is a hypersensitivity reaction which is most commonly triggered by infections. It may be divided into minor and major forms.<br><br>Previously it was thought that Stevens-Johnson syndrome (SJS) was a severe form of erythema multiforme. They are now however considered as separate entities.<br><br>Features<br><ul><li>target lesions</li><li>initially seen on the back of the hands / feet before spreading to the torso</li><li>upper limbs are more commonly affected than the lower limbs</li><li>pruritus is occasionally seen and is usually mild</li></ul><br>Causes<br><ul><li>viruses: herpes simplex virus (the most common cause), Orf*</li><li>idiopathic</li><li>bacteria: Mycoplasma, <i>Streptococcus</i></li><li>drugs: penicillin, sulphonamides, carbamazepine, allopurinol, NSAIDs, oral contraceptive pill, nevirapine</li><li>connective tissue disease e.g. Systemic lupus erythematosus</li><li>sarcoidosis</li><li>malignancy</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd001b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd001.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd001b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd002b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd002.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd002b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd003b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd003.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd003b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd004b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd004.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd004b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd001b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd001.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd001b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><b>Erythema multiforme major</b><br><br>The more severe form, erythema multiforme major is associated with mucosal involvement.<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd115b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd115.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd115b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Example of mucosal involvement in erythema multiforme major</div><br>*Orf is a skin disease of sheep and goats caused by a parapox virus</div>
Essential tremor (previously called benign essential tremor) is an autosomal dominant condition which usually affects both upper limbs
Features
* postural tremor: worse if arms outstretched
* improved by alcohol and rest
* most common cause of titubation (head tremor)
Management
* propranolol is first-line
* primidone is sometimes used
!!Sick Euthyroid Syndrome
In sick euthyroid syndrome (now referred to as non-thyroidal illness) it is often said that everything (TSH, thyroxine and T3) is low. In the majority of cases however the TSH level is within the >normal range (inappropriately normal given the low thyroxine and T3).
Changes are reversible upon recovery from the systemic illness and hence no treatment is usually needed.
!!<center>''EYE INFECTIONS''</center>
<hr>
!!!<center>''BLEPHARITIS''</center>
<hr>
* Lid margin care with baby shampoo & warm compresses 24 hourly. Artificial tears if associated with dry eye. If needed CLoxacillin 250-500 QID OR Cephalexin 500 QID; For MRSA Bactrim DS BD OR Linezolid 600 BD
<hr>
!!!<center>''CONJUCTIVITIS''</center>
<hr>
* Viral-no Abx; Bacterial: Ophthalmologic solution: Gatifloxacin 0.3%, levofloxacin 0.5%, Moxifloxacin 0.5% 1-2 drops q2h while awake during 1st 2 days, then q4-8h upto 7 days
<hr>
!!!<center>''HERPES SIMPLEX KERATITIS''</center>
<hr>
* Trifluridine ophthalmic soln 1drop 2 hourly, up to 9 times/day until re-epithilised. Then 1 drop 4 hourly upto 5 times/day for total duration of 21days
<hr>
!!!<center>''VARICELLA ZOSTER OPHTHALMICUS''</center>
<hr>
* Famciclovir 500mg BD Or TID OR Valacyclovir 1gm oral TID X 10days OR Acyclovir 800mg 5 times/d x 10days
<hr>
!!!<center>''KERATITIS''</center>
<hr>
* Moxifloxacin topical(0.5%):1 drop 1 hourly for first 48hr,then reduce as per response
* OR Gatifloxacin 0.3% ophthalmic Solution 1drop 1 hourly for 1st 48hrs then reduce as per response;
* ''Contact lens wearers:'' Tobramycin or Gentamicin 14mg/ml + Piperacilin or Ticarcillin eye drops (6-12mg/mL) q15-60 min around the clock 24-72hr,then slowly reduce frequency;
* ''Fungal:'' Natamycin (5%) 1drop 1-2 hourly for several days,then 3-4 hourly for several days depending on response OR Amphotericin B (0.15%) 1 drop q1-2 hourly for several days depending on the response;
* ''Protozoan(soft contact lens users):'' Optimal regimen uncertain Suggested –(Chlorhexidine 0.02% or Polyhexamethylenebiguanide 0.02%) + (Propamidineisethionate 0.1%or Hexamidine 0.1%) eye drops 1drop every 1 hourly hourly during day time, taper according to clinical response
!!!<center>''EYE PROBLEMS''</center>
<hr>
<center>''Lids / Lashes''</center>
<hr>
''Stye/hordeolum:''
* Warm compresses, 15 min at a time QID
* Refer to ophthalmologist for incision & curettage.
''Chalazion:''
* Warm compresses, 15 min at a time QID
* Refer to ophthalmologist for incision & curettage.
''Blepharitis:''
* Mild to moderate symptoms: warm compresses, lid massage, and lid washing, artificial tear eye drops to treat the dryness
* If not responding Neosporin eye oint placed directly onto the lid margin once daily at bedtime.
* Lid hygiene measures should be continued.
* If not responding give doxycycline or azithromycin
* If still not responding refer to an ophthalmologist.
<hr>
<center>''Conjunctiva''</center>
<hr>
''Conjunctivitis''
Bacterial: Neosporin oint or CIplox eye drops
Allergic: Antihistamine/decongestant drops 1-2 drops QID for no more than three weeks
''EpiScleritis/scleritis:''
Indomethacin 50 mg TDS
Subconjunctival hemorrhage: self-resolve over 2-3 wks, and require no treatment.
<hr>
<center>''Cornea''</center>
<hr>
* ''Abrasion'' Most corneal abrasions heal regardless of therapy in 24 to 72 hours. Give Ciplox eye drops
* ''Foreign body:'' Treat initially by attempt to remove by irrigation or swab; refer if still present after 24 hr
* ''Infectious keratitis''
* ''Bacterial:'' Muco-purulent, White spot on cornea spots stains w/fluorescein; ''Refer IMMEDIATELY''
* ''Viral:'' watery Gray, branching opacity dendrite; dendrite revealed w/fluorescein; ''Refer IMMEDIATELY''
<hr>
<center>''Anterior chamber/Iris''</center>
<hr>
* ''Iritis: Refer IMMEDIATELY''
* ''Hyphema: Refer IMMEDIATELY''
* ''Hypopyon: Refer IMMEDIATELY''
<hr>
<center>''Iris/lens''</center>
<hr>
* ''Angle closure glaucoma: Refer IMMEDIATELY''
* For all patients take history, measurement of visual acuity, and findings on penlight examination
* Visual acuity of each eye should be assessed in all patients using a Snellen chart or alternative means.
* Penlight examination should include pupil size and reactivity to light, the presence and nature of discharge, the pattern of redness, and the presence of corneal opacity, hypopyon, or hyphema.
* In the patient with red eye, if vision is unaffected, the pupil reacts, there is no objective foreign body sensation or photophobia, and there is no corneal opacity, hyphema or hypopyon, it is reasonable to manage the condition.
<hr>
<center>''Emergency referral for ophthalmologic evaluation''</center>
<hr>
* Unilateral red eye with pain, nausea, and vomiting
* Hyphema or hypopyon
* Visual deficit
* Corneal opacity or infiltrate that stains with fluorescein
* Severe ocular pain
Eyelid problems commonly encountered include:
* blepharitis: inflammation of the eyelid margins typically leading to a red eye
* stye: infection of the glands of the eyelids
* chalazion (Meibomian cyst)
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img066.jpg">
</center>
* entropion: in-turning of the eyelids
* ectropion: out-turning of the eyelids
;Stye
Different types of stye are recognised:
* external (hordeolum externum): infection (usually staphylococcal) of the glands of Zeis (sebum producing) or glands of Moll (sweat glands).
* internal (hordeolum internum): infection of the Meibomian glands. May leave a residual chalazion (Meibomian cyst)
* management includes hot compresses and analgesia. CKS only recommend topical antibiotics if there is an associated conjunctivitis
A ''chalazion (Meibomian cyst)'' is a retention cyst of the Meibomian gland. It presents as a firm painless lump in the eyelid. The majority of cases resolve spontaneously but some require surgical drainage
Ezetimibe is a lipid-lowering drug which inhibits cholesterol receptors on enterocytes, decreasing cholesterol absorption in the small intestine.
NICE produced guidelines in 2016 on the use of ''ezetimibe in primary heterozygous-familial and non-familial hypercholesterolaemia''
* Ezetimibe monotherapy is recommended as an option for treating primary hypercholesterolaemia in adults in whom initial statin therapy is contraindicated or who cannot tolerate statin therapy
* Ezetimibe, coadministered with initial statin therapy, is recommended as an option for treating primary hypercholesterolaemia in adults who have started statin therapy when:
* → serum total or LDL cholesterol concentration is not appropriately controlled either after appropriate dose titration of initial statin therapy or because dose titration is limited by intolerance to the initial statin therapy
* → a change from initial statin therapy to an alternative statin is being considered.
<div id="body_content">
Factor V Leiden (activated protein C resistance) is the most common inherited thrombophilia, being present in around 5% of the UK population. <br><br>It is due to a gain of function mutation in the Factor V Leiden protein. The result of the mis-sense mutation is that activated factor V (a clotting factor) is inactivated 10 times more slowly by activated protein C than normal. This explains the alternative name for factor V Leiden of activated protein C resistance,<br><br>Heterozygotes have a 4-5 fold risk of venous thrombosis. Homozygotes have a 10 fold risk of venous thrombosis but the prevalence is much lower at 0.05%.<br><br>Screening for factor V Leiden is not recommended, even after a venous thromboembolism. The logic behind this is that a previous thromboembolism itself is a risk factor for further events and this should dictate specific management in the future, rather than the particular thrombophilia identified.<br><br>The table below shows the prevalence and relative risk of venous thromboembolism (VTE) of the different inherited thrombophilias:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Condition</th><th>Prevalence</th><th>Relative risk of VTE</th></tr></thead><tbody><tr><td>Factor V Leiden (heterozygous)</td><td>5%</td><td>4</td></tr><tr><td>Factor V Leiden (homozygous)</td><td>0.05%</td><td>10</td></tr><tr><td>Prothrombin gene mutation (heterozygous)</td><td>1.5%</td><td>3</td></tr><tr><td>Protein C deficiency</td><td>0.3%</td><td>10</td></tr><tr><td>Protein S deficiency</td><td>0.1%</td><td>5-10</td></tr><tr><td>Antithrombin III deficiency</td><td>0.02</td><td>10-20</td></tr></tbody></table></div></div>
!!!<center>''FALLS''</center>
<hr>
//You are called to evaluate an 84-year-old woman with pneumonia who has fallen on her way to the bathroom//
* Immediate Questions
* What were the circumstances of the fall?
* Determine, if possible, exactly how the fall occurred: What activity was the patient doing, and how did she feel at the time of the fall?
* Causes of falls: intrinsic (due to a condition of the patient, such as orthostatic hypotension) or extrinsic (due to an environmental cause, such as a slippery floor). In many cases, the causes are intermingled.
* B. What symptoms (if any) does the patient have?
* Any H/O dizziness, palpitations, dyspnea, chest pain, weakness, confusion, incontinence, loss of consciousness, or tongue biting occurred. In addition, inquire about pain involving the head, neck, ribs, arms, back, or hips.
* What are the vital signs?
* Acute infection, dehydration, MI?
* What medical conditions does the patient have?
* DM (autonomic dysfunction leading to orthostatic hypotension, hyperglycemia, hypoglycemia)?
* Parkinson?
* What medications is the patient taking?
* Extrinsic causes. Slippery floors, Inadequate lighting, Transfers, Bed side rails, Walking aids not available
* Intrinsic causes: “Normal” aging, CVA, Parkinson’s disease, Dementia, Seizures, Peripheral neuropathy. Vitamin B12 deficiency, Vestibular dysfunction, cardio Syncope, Orthostatic hypotension, Arrhythmias, Angina or MI, Fluid/volume loss, Metabolic: Hyperthyroidism, Hypoglycemia, Electrolyte imbalance:Hypokalemia or hypomagnesemia
* Metabolic encephalopathy. Uremia and hepatic failure can cause confusion.
* Depression, dementia.
* H/O Congestive heart failure.
* Any infection may be associated with a change in mental status, particularly in the elderly.
* Check orthostatics
* Any evidence of trauma from the fall, such as soft tissue swelling and tenderness.
* Look for cataracts, which may impair vision.
* Look for evidence of fractures, such as an externally rotated and flexed hip, deformity of long bones, or swelling over these sites.
* Get CBC, KFT, LFT, Urine RE, X ray for fractures, NCCT head, ECG
<div class="twocolumns">
<$list filter="[tag[Fav's]sort[title]]"/>
</div>
!!Fetal Blood Sampling
* Foetal blood sampling (FBS) is performed by taking a blood sample from the foetus's scalp via the transvaginal route.
* A normal pH would be between 7.3-7.4. This allows an objective measure of foetal hypoxemia and allows the obstetrician the ability to judge how best to expedite delivery.
;Contraindications
* Maternal infections (HIV, Hepatitis, HSV)
* suspected foetal bleeding disorders and
* prematurity of <34 weeks
!!OBGYN Cancers
;Cervical Ca
*Sex Infections: First intercourse, Multiple partners, Poor socio economic status
*Smoking, COCP, High Parity
;OvarianCa
*Family history: BRCAs
*Many Ovulations (early menarche-nulliparity-late menopause)
;Endometrial Ca
*Genetic: HNPCC
*Metabolic factors: Obesity, DM2, PCOD
*Unopposed Estrogen: Early Menarche, Nulliparity, Late Menopause, Estrogen only, Tamoxifen
;Breast Ca
*Genetic: p53 mutations
*Family history: BRCAs, 1st degree relative
*Body Habitus: Obesity
*Any Estrogen: Early Menarche, Nulliparity(>30), Late Menopause, Combined OCPs
*Other: Not breast feeding, ionizing radiation, past Br Ca, past Br Surgery
---
>Prostitute is Poor Promiscous Smoker on Pills with many kids
*Early first intercourse - Multiple partners - Multiple kids
---
>OVA and RE
*Egg releases(many ovulations) and RELations(family history) are risk factors for Ovarian Ca
---
>ENDOmetrial-ENDOcrine causes
*Obesity-DM2-PCOD
> Old Obese Diabetic Godralu
---
<div id="notecontent">Ferritin is an intracellular protein that binds iron and stores it to be released in a controlled fashion at sites where iron is required. <br><br><b>Increased ferritin levels</b><br><br>This is typically defined as > 300 µg/L in men/postmenopausal women and > 200 µµg/L in premenopausal women.<br><br>Ferritin is an acute phase protein and may be synthesised in increased quantities in situations where inflammatory activity is ongoing. Falsely elevated results may therefore be encountered clinically and need to be taken in the context of the clinical picture and blood results.<br><br>We can split the causes of increased ferritin levels into 2 distinct categories;<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Without iron overload (around 90% of patients)</th><th>With iron overload (around 10% of patients)</th></tr></thead><tbody><tr><td>Inflammation (due to ferritin being an acute phase reactant)<br>Alcohol excess<br>Liver disease<br>Chronic kidney disease<br>Malignancy</td><td>Primary iron overload (hereditary haemochromatosis)<br><br>Secondary iron overload (e.g. following repeated transfusions)</td></tr></tbody></table></div><br>The best test to see whether iron overload is present is <b>transferrin saturation</b>. Typically, normal values of < 45% in females and < 50% in males exclude iron overload.<br><br><b>Reduced ferritin levels</b><br><br>Because iron and ferritin are bound the total body ferritin levels may be decreased in cases of iron deficiency anaemia. <br><br>Measurement of serum ferritin levels can be useful in determining whether an apparently low haemoglobin and microcytosis is truly caused by an iron deficiency state.</div>
`The normal transferrin saturation effectively excludes iron overload as a cause of the raised ferritin`
!!!<center>''FEVER''</center>
<hr>
* Fever with diarrhea: treat as acute GE
* Fever with abdominal pain: intra abdominal infections (Cholecystitis, appendicitis, perforation, peritonitis, colitis, liver abscess, Hepatitis, pancreatitis, etc): Start protocol and admit if necessary
* Fever with headache, vomiting, meningeal signs, seizures, altered mental status, semi consciousness: always admit the patient and start meningitis protocol
* Fever with RHD or cardiac valve problem think of endocarditis
* Any cellulitis, furunculosis, boils, abscess, necrotising fasciitis: treat accordingly
* Fever with respiratory symptoms (cough, SOB, chest pain, etc): Pneumonia, COPD exacerbation, Pleural effusion, empyema): Admit
* Any Pharyngitis, Sinusitis, acute bronchitis? Treat accordingly
* Any urinary symptoms: UTI, Pyelonephritis, Prostatitis. Refer to antibiotics
* In pregnant ladies: Chorioamnionitis, septic abortion, obstetric sepsis
* Flu like symptoms: Influenza
* In females any Pelvic inflammatory diseases?
* Bone or joint pain with fever: Osteomyelitis, septic arthritis
* Any ENT problem: Pharyngitis, Tonsillitis, Sinusitis, Otitis externa, Otitis media, Mastoiditis, Epiglottitis
* Immunocompromised: febrile neutropenia?
* No localised symptoms: test for Malaria, Typhoid, Dengue during season
* Get CBC, LFT, KFT, CRP, Blood cultures, Urine RE with cultures, CXR, LP if needed, MP card, Typhidot or widal, Dengue test, UDG or CT abdomen
!!<center>''MISCELLANEOUS''</center>
<hr>
!!!<center>''FEVER''</center>
<hr>
* ''Fever:'' Urine RE, cultures, CBC, Bllod cultures, CXR, Widal MP, Montoux, USG, KFT, LFT, LP, ANA, RA Factor, C3 componenet, BM aspiration
* ''Fever in <3m old:'' Fully investigate, Blood and urine cultures, CXR, LP, if sick admit
* ''Fever in 3-36m old:'' check blood and urine, Rx with Amox,; if sick admit and do labs, give Ceftriaxone +/- Gent
* ''Fever in Neutropenic Pts:'' TC<500; ↑CRP and Procalcitonin; full sepsis work up; Abx Pseudomonas and Staph coverage(Ceftazidime); If culture –ve then fungal coverage(Flucon 6 mg/kg IV OD; if very sick Liposomal Amphoterisin 1 mg/kg IV OD
* ''FUO:'' CBC, Urine & Blood C&S, MP, Montoux, CXR, Dengue, Leptospira serology, HIV, ANA, RA factor, BM, USG, CT, Immunoglobulin assay
<hr>
!!!<center>''RASH''</center>
<hr>
* ''Macular/Maculopapular rash:'' Measeles, Rubella, Erythema Infectiosum, Non specific enterovirus, Roseola infantum, Infectious mononucleosis, Pityriasis rosea, Typhoid fever, Syphillis, Rickettsiae
* ''Papular/Papulovesical rash:'' Chicken pox, Herpes simplex, Hand foot mouth disease, Scabies, Impetigo, Molluscum contageosum, Pappular urticaria
* ''Purpuric/Hemorrhagic Rash:'' Meningococcaemia, Henoch schonlein purpura, Viral hemorrhagic fevers, Viral fever with thrombocytopenia, ITP, SLE
* ''Diffuse erythema patches:'' Rubella, Scarlet fever, Kawasakhi syndrome, TSS, Erythema multiforme, Scalded skin syndrome, Erythema marginatum, Erythema nodosusm
* ''Measles:'' No antiviral; IVF, Normal diet, PCM for fever, Vit A 2 Lac STAT; if Pneumonia-Augmentin, if wheeze Budecort nebs
* ''Post exposure prophylaxis for measles:'' Isolation 7 ds; Measles vaccine within 48 hrs; Human immunoglobulin 0.25 ml/kg, max 15 ml IM STAT
* ''Rubella, Erythema Infectiosum(Slapped cheek), Roseola infantum, Hand foot and mouth disease:'' Supportive care
* ''Herpangina:''No hot or spicy food, take cool items, ICE CREAM, analgesics
* ''Mumps:'' Amylase if abd pain, LP if meningeal signs; Isolation 10 days, PCM, local warm or cold packs, good oral hygiene, Abx(Amox-clv) if needed, ''Orchitis''-local support to elevate scrotum, analgesics, local ice packs, ''Arthritis:'' NSAIDS; ''Pancreatitis:'' NPO, IVF, antispasmodics, pain meds
!!!<center>''FEVER PROTOCOL''</center>
<hr>
* IVF if NPO
* Inj NS @ 75 ml/hr
* Inj Monocef 1 gm IV q12h
* Inj Augmentin 1.2 IV q12h
* Tab PCM 500 TDS and sos
* Labs: CBC, MP card, Widal, Dengue test during season
* Urine RE with cultures
* Blood cultures
* CXR if needed
* LP if needed
<div id="notecontent">Fibroids are benign smooth muscle tumours of the uterus. They are thought to occur in around 20% of white and around 50% of black women in the later reproductive years.<br><br>Associations<br><ul><li>more common in Afro-Caribbean women</li><li>rare before puberty, develop in response to oestrogen, don't tend to progress following menopause</li></ul><br>Features<br><ul><li>may be asymptomatic</li><li>menorrhagia</li><li>lower abdominal pain: cramping pains, often during menstruation</li><li>bloating</li><li>urinary symptoms, e.g. frequency, may occur with larger fibroids</li><li>subfertility</li></ul><br>Diagnosis<br><ul><li>transvaginal ultrasound</li></ul><br>Management<br><ul><li>symptomatic management with a levonorgestrel-releasing intrauterine system is recommended by CKS first-line</li><li>other options include tranexamic acid, combined oral contraceptive pill etc</li><li><span class="concept" data-cid="8415">GnRH agonists</span> may reduce the size of the fibroid but are typically useful for short-term treatment</li><li>surgery is sometimes needed: <span class="concept" data-cid="2966">myomectomy</span>, hysteroscopic endometrial ablation, hysterectomy</li><li>uterine artery embolization</li></ul><br>Complications<br><ul><li>red degeneration - haemorrhage into tumour - commonly occurs during pregnancy</li></ul></div>
---
;Options for women trying to conceive
Myomectomy is the only treatment option here that will also retain this lady's fertility. Depending on the operation performed, and whether the uterine cavity was entered, the lady would need counselling in regards to delivery, since often a caesarean section is advised due to risk of uterine rupture.
GHRH agonists effectively turn off the ovaries, which causes the fibroids to shrink and therefore are easier to remove surgically. On stopping the medication, the fibroids grow back. As this treatment turns off the ovaries, it inhibits ovulation and therefore means that pregnancy is not possible during this time. As a treatment on its own, it would not be suitable in this case as it causes temporary infertility and fibroid regrowth on cessation. However, if combined with a myomectomy, it would provide a suitable treatment option.
Endometrial ablation destroys the endometrial lining, therefore meaning that an embryo would not be able to implant.
Uterine artery embolisation is not recommended if trying to conceive as it cuts down the blood supply to the uterus significantly, therefore meaning that the fetus would be unable to implant and grow.
Ulipristal acetate is a selective progesterone receptor modulator. It is used pre-operatively for women with fibroids as it has been proven to shrink them, thus making surgery easier. This medication affects fertility, thus is not suitable for women trying to get pregnant, unless (like GHRH agonists) it is used for a short period in combination with surgery.
Finasteride is an inhibitor of 5 alpha-reductase, an enzyme which metabolises testosterone into dihydrotestosterone.
Indications
* benign prostatic hyperplasia
* male-pattern baldness
Adverse effects
* impotence
* decrease libido
* ejaculation disorders
* gynaecomastia and breast tenderness
Finasteride causes decreased levels of serum prostate-specific antigen
---
>FI n A STERIDE - FIve Alpha reductase inhibitor - blocks testoSTERONE conversion
---
!!!Trigger finger
is a common condition associated with abnormal flexion of the digits. It is thought to be caused by a disparity between the size of the tendon and pulleys through which they pass. In simple terms the tendon becomes 'stuck' and cannot pass smoothly through the pulley.<br><br>Associations* (idiopathic in the majority)<br><ul><li>more common in women than men</li><li>rheumatoid arthritis</li><li>diabetes mellitus</li></ul><br>Features<br><ul><li>more common in the thumb, middle, or ring finger</li><li>initially stiffness and snapping ('trigger') when extending a flexed digit</li><li>a nodule may be felt at the base of the affected finger </li></ul><br>Management<br><ul><li>steroid injection is successful in the majority of patients. A finger splint may be applied afterwards</li><li>surgery should be reserved for patients who have not responded to steroid injections</li></ul><br>*there is scanty evidence to support a link with repetitive use
>Trigger is snapping at first, then stuck
!!!Mallet finger
A mallet finger is a deformity of the finger caused when the tendon that straightens your finger (the extensor tendon) is damaged.
When a ball or other object strikes the tip of the finger or thumb and forcibly bends it, the force tears the tendon that straightens the finger. The force of the blow may even pull away a piece of bone along with the tendon. The tip of the finger or thumb no longer straightens. This condition is sometimes referred to as baseball finger.
!!!Boutonniere deformity
To be categorized as a Boutonniere deformity, a finger must experience `both of the following` problems:
# The finger is bent at the middle joint OR the thumb is bent at the firstjoint, and;
# The finger or thumb is bent backwards at the end joint
>Opposite to Swan Neck deformity
!!!Swan Neck deformity
In a swan neck deformity, the middle joint of a finger is extended (bent back) more than normal. The end joint is flexed.
| !FISSURE DRUGS |<|
|Lidocaine+<br>Cal Dobesilate+<br>Hydrocort+<br>Zinc|Oint Smuth BD, 2 wks|
|Ampicillin+<br>Cloxacillin|Cap Megapen (250+250) 1 cap TDS, 7 days|
|Ibuprofen+<br>PCM|Tab Combiflam BD, 1 wk, with food|
|Mg(OH),,2,,|Syr Cremaffin 30-60 mL/day once daily at bedtime|
!!!<center>''FLANK PAIN''</center>
<hr>
* Onset (sudden vs. progressive)? Location?
* Dysuria/hematuria/urinary frequency? Prior h/o similar sxs?
* ROS (fever, rash, trauma, nausea, vomiting, weakness, abdominal pain)?
* PMH (kidney stones, gout, cancer, AAA, congenital kidney dz, cardiac or vascular dz)?
* Evaluation: CBC, Cr; consider renal u/s or non contrast abdominal CT
* Flank Pain Differential
* Renal: Nephrolithiasis, urolithiasis, retroperitoneal hematoma, ruptured renal cyst, ureteral stricture
* Infectious: Pyelonephritis, perinephric abscess, psoas abscess, pneumonia, discitis, vertebral osteomyelitis, epidural abscess
* Vascular: Ruptured AAA, renal infarct, renal vein thrombosis, PE
* GI: Biliary dz
* Other: PCKD (ruptured cyst), renal malignancy, varicella-zoster
* Trauma: Lumbar spasm, radiculopathy
<hr>
<center>''Urolithiasis (Nephrolithiasis & Ureterolithiasis)''</center>
<hr>
* Urine RE, urea, cr, USG abd, CT non contrast
* Ibuprofen 400 mg TID
* If not able to take oral Inj Ketorolac 30 mg IM [caution in renal insufficiency])
* Inj Morphine 0.1 mg/kg × 1 if no relief
* Medical expulsive therapy: Tamsulosin 0.4 mg QD × 14 d or until stone passage
* Urology consult: For concomitant infection, renal insufficiency, or low likelihood of stone passage (>10 mm)
* Home: Adequate pain control in ED, nl Cr; f/u w/ urology in 24–48 h if stone >5 mm
* Admit: Intractable pain, unable to tolerate POs, renal failure,infection, renal transplant, single kidney, comorbid conditions (DM, baseline CRI), infected stone w/ obstruction
* Most stones ≤5 mm (70–98%) will pass spontaneously. Stones >5 mm have smaller chance (25–51%) of spontaneous passage & are more likely to need urologic intervention.
* Send pts home w/ strainer, esp 1st-time stone formers for stone analysis
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypercalcemia"/>Hypercalcemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hyperglycemia"/>Hyperglycemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hyperkalemia"/>Hyperkalemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypernatremia"/>Hypernatremia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypocalcemia"/>Hypocalcemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypoglycemia"/>Hypoglycemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypokalemia"/>Hypokalemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypomagnesemia"/>Hypomagnesemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hyponatremia"/>Hyponatremia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypophosphatemia"/>Hypophosphatemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypotension"/>Hypotension / Shock</$button>
</center>
<div id="notecontent">Folic acid is converted to tetrahydrofolate (THF). Green, leafy vegetables are a good source of folic acid.<br><br>Functions<br><ul><li> THF plays a key role in the transfer of 1-carbon units (e.g. methyl, methylene, and formyl groups) to the essential substrates involved in the synthesis of DNA & RNA</li></ul><br>Causes of folic acid deficiency:<br><ul><li><span class="concept" data-cid="2857">phenytoin</span></li><li>methotrexate</li><li>pregnancy</li><li>alcohol excess</li></ul><br>Consequences of folic acid deficiency:<br><ul><li>macrocytic, megaloblastic anaemia</li><li>neural tube defects</li></ul><br>Prevention of neural tube defects (NTD) during pregnancy:<br><ul><li>all women should take 400mcg of folic acid until the 12th week of pregnancy</li><li>women at higher risk of conceiving a child with a NTD should take 5mg of folic acid from <span class="concept" data-cid="7260">before conception</span> until the 12th week of pregnancy</li><li>women are considered higher risk if any of the following apply:</li><li>→ either partner has a NTD, they have had a previous pregnancy affected by a NTD, or they have a family history of a NTD</li><li>→ the woman is taking <span class="concept" data-cid="3060">antiepileptic drugs</span> or has coeliac disease, <span id="concept_popover_id_3062" class="concept concept-0 trigger-link" data-cid="3062" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3062'>You've never been tested on this concept</div><br><div id='div_concept_rating3062' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(15,255,0)'>Importance: <b>97</b></span> </div>" data-original-title="Women with diabetes are considered at high risk of conceiving a child with neural tube defects">diabetes</span>, or thalassaemia trait.</li><li>→ the woman is <span id="concept_popover_id_3057" class="concept concept-0 trigger-link" data-cid="3057" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3057'>You've never been tested on this concept</div><br><div id='div_concept_rating3057' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(158,255,0)'>Importance: <b>69</b></span> </div>" data-original-title="Women with BMI of 30 kg/m2 or more are considered at high risk of conceiving a child with neural tube defects">obese</span> (defined as a body mass index [BMI] of 30 kg/m2 or more).</li></ul></div>
!!!<center>''FOLEY CATHETER INSERTION''</center>
<hr>
!!!<center>''MALE''</center>
<iframe width="806" height="453" src="https://www.youtube.com/embed/51QeAUI-DoQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
!!!<center>''FEMALE''</center>
<iframe width="806" height="453" src="https://www.youtube.com/embed/vXcuK-ru904" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
{{Foley Catheter Problems}}
!!!<center>''FOLEY CATHETER PROBLEMS''</center>
<hr>
//Male ward sister calls and tells you that the Foley catheter is not draining in a patient admitted 2 days previously for congestive heart failure.//
* Immediate Questions
* What has the urine output been?
* If the urine output has slowly tapered off, then the problem may be oliguria rather than a nonfunctioning Foley catheter.
* A Foley catheter that has never put out urine may not be in the bladder.
* Is the urine grossly bloody; are there any clots in the tubing or collection bag?
* Is the patient complaining of pain?
* Was any difficulty encountered in catheter insertion?
* Low urine output: dehydration, hemorrhage, or acute renal failure
* Obstructed Foley catheter: Kinking of catheter or tubing, Clots, tissue fragments. Sediment/stones. Chronically indwelling catheters (usually > 1 month)
* Improperly positioned Foley catheter?
* Bladder spasms?
* Inability to deflate Foley balloon?
* Check for tachycardia or hypotension, which is characteristic of hypovolemia and may explain the low urine output.
* Determine whether the bladder is distended (suprapubic dullness to percussion with or without tenderness). This may be indicative of an obstructed Foley catheter.
* Get a bladder scan
* Check BUN, creatinine. BUN-to creatinine ratio (> 20:1) suggests volume depletion.
* PT/INR if bleeding is present.
* Be sure the catheter is functioning.
* A rule of thumb is that a catheter that will not irrigate is in the urethra and not in the bladder.
* Start by gently irrigating the catheter with aseptic technique using a catheter-tipped 60-mL syringe and sterile normal saline. This may dislodge any clots obstructing the catheter. If sterile saline cannot be satisfactorily instilled and completely aspirated, the catheter should be replaced.
* If the catheter irrigates freely, evaluate the patient for anuria.
* Bladder spasms. Can be treated with oxybutynin, tolterodine
<hr>
<center>''Techniques to deflate a Foley balloon that does not empty''</center>
<hr>
# Cut off the valve; if this does not work, thread a 16F central venous catheter or 0.38 guidewire into the inflation channel, which may bypass the obstruction or perforate and deflate the balloon.
# Injection of 5–10 mL mineral oil into the inflation port will cause balloon rupture in latex catheters in 5–10 minutes but NOT in silicone catheters. Follow-up cystoscopy is needed to make sure there are no retained fragments. (Note: Hyperinflation of the balloon to rupture it should not be done.)
# As a last resort, ultrasound-directed transvesical needle puncture of the balloon may be needed.
<div id="notecontent"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Muscle</b></th><th><b>Origin</b></th><th><b>Insertion</b></th><th><b>Nerve supply</b></th><th><b>Action</b></th></tr></thead><tbody><tr><td>Flexor carpi radialis</td><td>Common flexor origin and surrounding fascia</td><td>Front of bases of second and third metacarpals</td><td>Median</td><td>Flexes and abducts the carpus, part flexes the elbow and part pronates forearm</td></tr><tr><td>Palmaris longus</td><td>Common flexor origin</td><td>Apex of palmar aponeurosis</td><td>Median</td><td>Wrist flexor</td></tr><tr><td>Flexor carpi ulnaris</td><td>Small humeral head arises from the common flexor origin and adjacent fascia. Ulnar head comes from medial border of olecranon and posterior border of ulna</td><td>Pisiform and base of the fifth metacarpal</td><td>Ulnar nerve</td><td>Flexes and adducts the carpus</td></tr><tr><td>Flexor digitorum superficialis</td><td>Long linear origin from common flexor tendon, adjacent fascia and septa and medial border of the coronoid process</td><td>Via tendons in the fibrous flexor sheath. At the level of the metacarpophalangeal joint each tendon split into two, these bands pass distally to their insertions</td><td>Median</td><td><span class="concept" data-cid="7731">Flexor of metacarpophalangeal joint and proximal interphalangeal joint</span></td></tr><tr><td>Flexor digitorum profundus</td><td>Upper two thirds of the medial and anterior surface of the ulna, medial side of the olecranon, medial half of the interosseous membrane</td><td>Via tendons that lie deep to those of flexor digitorum superficialis to insert into the distal phalanx</td><td>Medial part= ulnar, lateral part=anterior interosseous nerve</td><td><span class="concept" data-cid="7729">Flexes the distal interphalangeal joints and the wrist</span></td></tr></tbody></table></div></div>
;Reflex Sympathetic Dystrophy
The hand is well perfused so acute ischaemia is unlikely. A pink, sweaty, stiff hand that is very tender to touch is likely to be reflex sympathetic dystrophy. Treat with physiotherapy and NSAIDs.
;Malunion
Deformity
;Compartment Syndrome
Compartment syndrome presents with pain out of proportion to the clinical scenario. In this case the history of injury and a plaster cast are risks for developing compartment syndrome. The appearance of the fingers with neurovascular compromise is characteristic. In compartment syndrome you rarely find that the pressure is high enough to cause arterial compromise and therefore a pulse is present. The finding of a pulse also rules out acute ischaemia which might also cause severe pain. Once symptoms develop an emergency fasciotomy is required to relieve the pressure.
!!!<center>''FRACTURES''</center>
<hr>
* ''Nasal Fractures''
* CT only if significant deformity/persistent epistaxis/rhinorrhea
* Isolated nasal fractures → Most home w/ plastic/ENT f/u in 5–7 d for reduction, consider reduction in ED if displaced, (pediatric pts → 3 d, ↑ risk for growth dysplasia)
* ''Zygomatic Fracture''
* Maxillofacial CT
* ENT/OMFS/Plastics consult
* ''Mandibular Fractures''
* Maxillofacial CT
* OMFS or plastic surgery consult: Temporary immobilization (wiring of jaw) or delayed ORIF, abx (PCN, clindamycin) if gingival bleeding
* ''Maxillary Fractures''
* Maxillofacial CT
* Airway management, hemorrhage control (nasal packing/nasal Foley/elevation of head), abx (ceftriaxone) for CSF communication, ENT/OMFS consult, Admit
* ''Extremity injury''
* Last tetanus (booster if >5 y), time of injury, mechanism (crush/penetrating), neurologic deficit (loss of sensation/motor)
* Inspection: Color, discoloration, ecchymosis, perfusion, deformities, swelling
* Palpate pulses, all joints/bones (tenderness), FB, crepitance, strength, sensation, DTRs, range all joints, joint effusions
* Order Plain films guided by PE
* Orthopedic &/or vascular for open fractures, amputations, vascular injuries, compartment syndrome, hand surgery for significant hand injuries
* If Extremity Vascular Injury: Vascular surgery consult for immediate surgical repair (↓ salvage rate if >6 h)
* Open fractures: Immediate orthopedic consult for operative washout/fixation (<6 h), abx
* Closed UE fractures + intact neuro exam: Splint, outpt f/u
* Closed LE fractures + intact neuro exam: Splint, outpt f/u if able to use crutches
* Dislocations: ED reduction, pt f/u
!!Friedreich's ataxia
<div id="body_content">
is the most common of the early-onset hereditary ataxias. It is an autosomal recessive, trinucleotide repeat disorder characterised by a <span class="concept" data-cid="9319">GAA repeat in the X25 gene on chromosome 9 (frataxin)</span>. Friedreich's ataxia is unusual amongst trinucleotide repeat disorders in not demonstrating the phenomenon of anticipation.<br><br>The typical age of onset is 10-15 years old. Gait ataxia and kyphoscoliosis are the most common presenting features.<br><br>Neurological features<br><ul><li>absent ankle jerks/extensor plantars</li><li>cerebellar ataxia</li><li>optic atrophy</li><li>spinocerebellar tract degeneration</li></ul><br>Other features<br><ul><li>hypertrophic obstructive cardiomyopathy (90%, most common cause of death)</li><li>diabetes mellitus (10-20%)</li><li>high-arched palate</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd912b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd912.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd912b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of Friedreich's ataxia and ataxic telangiectasia. Note in particular how ataxic telangiectasia tends to present much earlier, often at the age of 1-2 years</div></div>
!!<center>''FUNGAL INFECTIONS''</center>
<hr>
!!!<center>''BRONCHOPULMONARY ASPERGILLOSIS''</center>
<hr>
* combination of glucocorticoids and itraconazole
* prednisone 0.5 mg/kg daily (or equivalent) for 14 days, followed by conversion to an every other day regimen of 0.5 mg/kg, and further tapering and discontinuation at three months
* Some patients may need a higher initial dose of prednisone (eg, 40 to 60 mg/day), if they are having an acute asthma flare.
* Another regimen is prednisolone 0.75 mg/kg for six weeks, 0.5 mg/kg for six weeks, then tapered by 5 mg every six weeks to continue for a total duration of at least 6 to 12 months
* Itraconazole – 200 mg three times a day for three days followed by 200 mg twice daily and taken with food if the capsule formulation
* Liver function tests should be monitored closely for evidence of hepatotoxicity.
* Voriconazole — 400 mg orally every 12 hours for two doses, followed by a maintenance dose of 200 mg twice daily.
* Liver function tests should be monitored closely for any evidence of hepatotoxicity.
<hr>
!!!<center>''CANDIDIAL INTERTRIGO''</center>
<hr>
* (cream, lotion, ointment, or gel).
* Clotrimazole Twice per day (CANDID, SURFAZ)
* Luliconazole Once per day (L-SYS)
* Miconazole Twice per day (MICOGEL)
* Terbinafine Once to twice per day (TEBINAFORCE, TERBICIP)
* Low-potency topical corticosteroids may be used in conjunction with antifungal therapy to treat associated pruritus, pain, and burning
* Moderate- and high-potency corticosteroid preparations should be avoided, including products that contain both an antifungal drug and a medium- or high-potency topical corticosteroid (eg, clotrimazole and betamethasone dipropionate).
* Systemic antifungal medications are rarely necessary for the treatment of intertrigo.
* Treatment with an oral agent is warranted when a patient has failed topical therapy or has a particularly severe or extensive presentation, eg, multiple intertriginous areas, significant maceration and skin breakdown, or numerous pustules and exudate.
* Fluconazole 50 to 100 mg daily or 150 mg weekly
* Itraconazole 200 mg twice daily
* For children:
* Fluconazole 6 mg/kg once, then 3 mg/kg per day
* Itraconazole 5 to 10 mg/kg per day divided in two doses
* Therapy is typically two to six weeks or until signs and symptoms have resolved.
* If resolution does not occur within this period, treatment should be discontinued and the diagnosis should be reevaluated.
* Common adverse effects from fluconazole and itraconazole oral antifungal drugs include diarrhea, dyspepsia, nausea, abdominal pain, headache, and morbilliform rash
* Patients should avoid occlusive clothing and promote aeration of susceptible areas.
* Skin care — Use of topical drying agents after treatment of active infection is important in the prevention of intertrigo, since they reduce moisture and maceration.
* Patients at risk for recurrence should use a drying agent indefinitely.
* Commonly used drying agents include antifungal powders
* Talcum powder has been used as a drying agent
* Obesity, incontinence, and underlying conditions, such as diabetes mellitus may contribute to infection
* Intermittent antifungal therapy — Intermittent (eg, twice-weekly) use of topical antifungal is sometimes used in an attempt to decrease the likelihood of recurrent candidal infection.
<hr>
!!!<center>''DERMATOPHYTE (TINEA) INFECTIONS''</center>
<hr>
* Topical antifungal creams as above
* Topical antifungal treatment is generally applied once or twice daily and continued for four weeks.
* Patients requiring oral antifungal therapy are usually treated with terbinafine, itraconazole, or fluconazole. Typical treatment regimens for adults include:
* Terbinafine: 250 mg per day for two weeks
* Itraconazole: 200 mg twice daily for one week
* Fluconazole: 150 mg once weekly for two to six weeks
* Typical pediatric doses for oral therapy include:
* Terbinafine tablets:
* 10 to 20 kg: 62.5 mg per day
* 20 to 40 kg: 125 mg per day
* Above 40 kg: 250 mg per day
* Itraconazole: 3 to 5 mg/kg per day
* Fluconazole: 6 mg/kg once weekly
* Patients with hyperkeratotic tinea pedis can benefit from combining antifungal treatment with a topical keratolytic, such as salicylic acid.
<div id="body_content">
Glucose-6-phosphate dehydrogenase (G6PD) deficiency is the commonest red blood cell enzyme defect. It is more common in people from the Mediterranean and Africa and is inherited in an X-linked recessive fashion. Many drugs can precipitate a crisis as well as infections and broad (fava) beans<br><br>Pathophysiology<br><ul><li>G6PD is the first step in the pentose phosphate pathway, which converts glucose-6-phosphate→ 6-phosphogluconolactone<ul><li>this reaction also results in nicotinamide adenine dinucleotide phosphate (NADP) → NADPH</li><li>i.e. glucose-6-phosphate + NADP → 6-phosphogluconolactone + NADPH</li></ul></li><li>NADPH is important for converting oxidizied glutathine back to it's reduced form</li><li>reduced glutathine protects red blood cells from oxidative damage by oxidants such as superoxide anion (O2-) and hydrogen peroxide</li><li><span class="concept" data-cid="8411">↓ G6PD → ↓ reduced NADPH → ↓ reduced glutathione → increased red cell susceptibility to oxidative stress</span></li></ul><br><span class="concept" data-cid="8410">Features</span><br><ul><li>neonatal jaundice is often seen</li><li>intravascular haemolysis</li><li>gallstones are common</li><li>splenomegaly may be present</li><li><span class="concept" data-cid="6134">Heinz bodies</span> on blood films. <span class="concept" data-cid="9641">Bite and blister cells</span> may also be seen</li></ul><br>Diagnosis is made by using a G6PD enzyme assay<br><br>Some drugs causing haemolysis<br><ul><li><span class="concept" data-cid="4677">anti-malarials: primaquine</span></li><li><span class="concept" data-cid="8409">ciprofloxacin</span></li><li><span class="concept" data-cid="1208">sulph- group drugs: sulphonamides, sulphasalazine, sulfonylureas</span></li></ul><br>Some drugs thought to be safe<br><ul><li>penicillins</li><li>cephalosporins</li><li>macrolides</li><li>tetracyclines</li><li>trimethoprim</li></ul><br>Comparing G6PD deficiency to hereditary spherocytosis:<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd905b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd905.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd905b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of G6PD deficiency to hereditary spherocytosis</div><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>G6PD deficiency</b></th><th><b>Hereditary spherocytosis</b></th></tr></thead><tbody><tr><td><b>Gender</b></td><td>Male (X-linked recessive)</td><td>Male + female (autosomal dominant)</td></tr><tr><td><b>Ethnicity</b></td><td>African + Mediterranean descent</td><td>Northern European descent</td></tr><tr><td><b>Typical history</b></td><td>• Neonatal jaundice<br> • Infection/drugs precipitate haemolysis<br> • Gallstones</td><td>• Neonatal jaundice<br> • Chronic symptoms although haemolytic crises may be precipitated by infection<br> • Gallstones<br> • Splenomegaly is common</td></tr><tr><td><b>Blood film</b></td><td>Heinz bodies</td><td>Spherocytes (round, lack of central pallor)</td></tr><tr><td><b>Diagnostic test</b></td><td>Measure enzyme activity of G6PD</td><td>Osmotic fragility test</td></tr></tbody></table></div></div>
| !GALLSTONE PREVENTION |<|
|Ursodiol|Tab Ursolic 300 mg BD 2 wks|
<div id="notecontent">There are 700,000 new cases of gastric cancer worldwide each year. <br><br>Epidemiology<br><ul><li>overall incidence is decreasing, but incidence of tumours arising from the cardia is increasing</li><li>peak age = 70-80 years</li><li>more common in Japan, China, Finland and Colombia than the West</li><li>more common in males, 2:1</li></ul><br>Histology<br><ul><li>signet ring cells may be seen in gastric cancer. They contain a large vacuole of mucin which displaces the nucleus to one side. Higher numbers of signet ring cells are associated with a worse prognosis</li></ul><br>Associations<br><ul><li><i>H. pylori</i> infection</li><li>blood group A: gAstric cAncer</li><li>gastric adenomatous polyps</li><li>pernicious anaemia</li><li>smoking</li><li>diet: salty, spicy, nitrates</li><li>may be negatively associated with duodenal ulcer</li></ul><br>Features<br><ul><li>dyspepsia</li><li>nausea and vomiting</li><li>anorexia and weight loss</li><li>dysphagia</li></ul><br>Investigation<br><ul><li>diagnosis: endoscopy with biopsy</li><li>staging: CT or endoscopic ultrasound - endoscopic ultrasound has recently been shown to be superior to CT</li></ul><br><b>Surgical aspects</b><br><br>There is some evidence of support a stepwise progression of the disease through intestinal metaplasia progressing to atrophic gastritis and subsequent dysplasia, through to cancer. The favoured staging system is TNM. The risk of lymph node involvement is related to size and depth of invasion; early cancers confined to submucosa have a 20% incidence of lymph node metastasis. Tumours of the gastro-oesophageal junction are classified as below:<br><br><div class="table-responsive"><table class="table table-bordered"><tbody><tr><td><b>Type 1</b></td><td>True oesophageal cancers and may be associated with Barrett's oesophagus.</td></tr><tr><td><b>Type 2</b></td><td>Carcinoma of the cardia, arising from cardiac type epithelium <br>or short segments with intestinal metaplasia at the oesophagogastric junction.</td></tr><tr><td><b>Type 3</b></td><td>Sub cardial cancers that spread across the junction. Involve similar nodal stations to gastric cancer.</td></tr></tbody></table></div><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb067b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb067.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Gastric cancer" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb067b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Upper GI endoscopy performed for dyspepsia. The addition of dye spraying (as shown in the bottom right) may facilitate identification of smaller tumours</div><br>Staging<br><ul><li>CT scanning of the chest abdomen and pelvis is the routine first line staging investigation in most centres.</li><li>Laparoscopy to identify occult peritoneal disease</li><li>PET CT (particularly for junctional tumours)</li></ul><br>Treatment<br><ul><li>Proximally sited disease greater than 5-10cm from the OG junction may be treated by sub total gastrectomy</li><li>Total gastrectomy if tumour is <5cm from OG junction</li><li>For type 2 junctional tumours (extending into oesophagus) oesophagogastrectomy is usual</li><li>Endoscopic sub mucosal resection may play a role in early gastric cancer confined to the mucosa and perhaps the sub mucosa (this is debated)</li><li>Lymphadenectomy should be performed. A D2 lymphadenectomy is widely advocated by the Japanese, the survival advantages of extended lymphadenectomy have been debated. However, the overall recommendation is that a D2 nodal dissection be undertaken. </li><li>Most patients will receive chemotherapy either pre or post operatively.</li></ul><br><b>Prognosis</b><br><br>UK Data<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Disease extent</b></th><th><b>Percentage 5 year survival</b></th></tr></thead><tbody><tr><td>All RO resections</td><td>54%</td></tr><tr><td>Early gastric cancer</td><td>91%</td></tr><tr><td>Stage 1</td><td>87%</td></tr><tr><td>Stage 2</td><td>65%</td></tr><tr><td>Stage 3</td><td>18%</td></tr></tbody></table></div></div>
<div id="body_content">
Gastroenteritis may either occur whilst at home or whilst travelling abroad (travellers' diarrhoea)<br><br>Travellers' diarrhoea may be defined as at least 3 loose to watery stools in 24 hours with or without one of more of abdominal cramps, fever, nausea, vomiting or blood in the stool. <span class="concept" data-cid="739">The most common cause is <i>Escherichia coli</i></span>.<br><br>Another pattern of illness is 'acute food poisoning'. This describes the sudden onset of nausea, vomiting and diarrhoea after the ingestion of a toxin. Acute food poisoning is typically caused by <i>Staphylococcus aureus</i>, <i>Bacillus cereus</i> or <i>Clostridium perfringens</i>.<br><br><b>Stereotypical histories</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Infection</b></th><th><b>Typical presentation</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="6882"><b><i>Escherichia coli</i></b></span></td><td>Common amongst travellers<br>Watery stools<br>Abdominal cramps and nausea</td></tr><tr><td><span class="concept" data-cid="6883"><b>Giardiasis</b></span></td><td>Prolonged, non-bloody diarrhoea</td></tr><tr><td><span class="concept" data-cid="6886"><b>Cholera</b></span></td><td>Profuse, watery diarrhoea<br>Severe dehydration resulting in weight loss<br>Not common amongst travellers</td></tr><tr><td> <span class="concept" data-cid="6888"><b><i>Shigella</i></b></span></td><td>Bloody diarrhoea<br>Vomiting and abdominal pain</td></tr><tr><td> <span class="concept" data-cid="6885"><b><i>Staphylococcus aureus</i></b></span></td><td>Severe vomiting<br>Short incubation period</td></tr><tr><td><span class="concept" data-cid="6889"><b><i>Campylobacter</i></b></span></td><td>A flu-like prodrome is usually followed by crampy abdominal pains, fever and diarrhoea which may be bloody<br><span class="concept" data-cid="3945">May mimic appendicitis</span><br>Complications include Guillain-Barre syndrome</td></tr><tr><td> <span class="concept" data-cid="6884"><b><i>Bacillus cereus</i></b></span></td><td>Two types of illness are seen<br><ul><li>vomiting within 6 hours, <span class="concept" data-cid="4191">stereotypically due to rice</span></li><li>diarrhoeal illness occurring after 6 hours</li></ul></td></tr><tr><td><span class="concept" data-cid="6890"><b>Amoebiasis</b></span></td><td>Gradual onset bloody diarrhoea, abdominal pain and tenderness which may last for several weeks</td></tr></tbody></table></div><br>Incubation period<br><ul><li>1-6 hrs: <i><i>Staphylococcus</i> aureus</i>, <i>Bacillus cereus</i>* </li><li>12-48 hrs: <i>Salmonella</i>, <i>Escherichia coli</i></li><li>48-72 hrs: <i>Shigella</i>, <i>Campylobacter</i></li><li>> 7 days: Giardiasis, Amoebiasis</li></ul><br>*vomiting subtype, the diarrhoeal illness has an incubation period of 6-14 hours</div>
!!!<center>''GASTROENTERITIS PROTOCOL''</center>
<hr>
* Inj NS 500 cc bolus if low BP, then at 75-100 ml/hr
* NPO if needed
* Encourage oral intake
* Inj Ciplox 400 mg IVq12h
* Inj Metrogyl 500 mg iv q8h
* Inj Aciloc 1 amp IV q12h
* If stools >10/d then Lopamide 2 tab STAT and then sos for each BM.
* Labs if needed
* CBC, LFT, KFT
| !GASTROENTERITIS DRUGS |<|
|Ciprofloxacin+<br>Tinidazole|Tab Ciprobid-TZ BD, 1 wk|
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Abdomen"/>Acute Abdomen</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Abdomen Protocol"/>Acute Abdomen Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Ascites-Cirrhosis Protocol"/>Ascites-Cirrhosis Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Constipation"/>Constipation</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Diarrhea"/>Acute Diarrhea</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Gastroenteritis Protocol"/>Gastroenteritis Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="GI Bleeding"/>Gastrointestinal Bleeding</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Lower GI Bleed Protocol"/>GI Bleed(Lower) Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Upper GI Bleed Protocol"/>GI Bleed(Upper) Protocol</$button><$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hematochezia"/>Hematochezia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Jaundice"/>Jaundice</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Nausea & Vomiting"/>Nausea & Vomiting</$button>
</center>
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Gastroenteritis"/>ACUTE GASTROENTERITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Cholera"/>CHOLERA</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Bacterial Dysentery"/>BACTERIAL DYSENTERY</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Amoebic Dysentery"/>AMOEBIC DYSENTERY</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Giardiasis"/>GIARDIASIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Enteric/Typhoid Fever"/>ENTERIC/TYPHOID FEVER</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hospital Acquired Diarrhea"/>HOSPITAL ACQUIRED DIARRHOEA</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Cholecystitis-Cholangitis"/>BILIARY TRACT INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Diverticulitis"/>DIVERTICULITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Severe Pancreatitis"/>SEVERE PANCREATITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Spontaneous Bacterial Peritonitis"/>SPONTANEOUS BACTERIAL PERITONITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Cirrhotic Patients"/>CIRRHOTIC PATIENTS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Secondary Peritonitis"/>SECONDARY PERITONITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Liver Abscess"/>LIVER ABSCESS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="H Pylori Infection"/>H PYLORI INFECTION</$button>
</center>
!!! <center>''GLASGOW COMA SCALE''</center>
<center>
|!BEHAVIOR|!RESPONSE|!SCORE|
|!EYE OPENING|''Spontaneous''| 4 |
|~|To ''Speech''| 3 |
|~|To ''Pain''| 2 |
|~|''No Response''| 1 |
| |<|<|
|!VERBAL RESPONSE|''Oriented'' to time, place, person| 5 |
|~|''Confused''| 4 |
|~|Inappropriate ''Words''| 3 |
|~|Incomprehensible ''Sounds''| 2 |
|~|''No Response''| 1 |
| |<|<|
|!MOTOR RESPONSE|''Obeys'' commands| 6 |
|~|''Localizes'' to pain| 5 |
|~|Flexion ''withdrawal'' from pain| 4 |
|~|''Abnormal flexion''(decorticate)| 3 |
|~|''Abnormal extension''(decerebrate)| 2 |
|~|''No Response''| 1 |
| |<|<|
|!TOTAL SCORE|!Best response:15, Comatose<8, Totally unresponsive 3|<|
---
|!Stroke Symptoms(FAST)|
|''F''acial Droop|
|''A''rm Drift|
|''S''lurred Speech|
|''T''ime To Act|
</center>
<div id="notecontent">Genital warts (also known as condylomata accuminata) are a common cause of attendance at genitourinary clinics. They are caused by the many varieties of the human papilloma virus HPV, especially types 6 & 11. It is now well established that HPV (primarily types 16,18 & 33) predisposes to cervical cancer. <br><br>Features<br><ul><li>small (2 - 5 mm) fleshy protuberances which are slightly pigmented</li><li>may bleed or itch</li></ul><br>Management<br><ul><li>topical podophyllum or cryotherapy are commonly used as first-line treatments depending on the location and type of lesion. Multiple, non-keratinised warts are generally best treated with topical agents whereas solitary, keratinised warts respond better to cryotherapy</li><li>imiquimod is a topical cream which is generally used second line</li><li>genital warts are often resistant to treatment and recurrence is common although the majority of anogenital infections with HPV clear without intervention within 1-2 years</li></ul></div>
Genital Herpes is most often caused by the herpes simplex virus ([[HSV]]) type 2 (cold sores are usually due to HSV type 1). Primary attacks are often severe and associated with fever whilst subsequent attacks are generally less severe and localised to one site. There is typically multiple painful ulcers.
SyPhilis is a sexually transmitted infection caused by the spirochaete Treponema pallidum. Infection is characterised by primary, secondary and tertiary stages. A painless ulcer (chancre) is seen in the primary stage. The incubation period= 9-90 days.
ChanCroid is a tropical disease caused by Haemophilus ducreyi. It causes painful genital ulcers associated with unilateral, painful inguinal lymph node enlargement. The ulcers typically have a sharply defined, ragged, undermined border.
>chanCROId - duCREYi
:CRY with Painful ulcers - Chancroid - hemophilus ducreyi
Lymphogranuloma venereum ([[LGV]]) is caused by ChlamydiaTrachomatis. Typically infection comprises of three stages
* stage 1: small painless pustule which later forms an ulcer
* stage 2: painful inguinal lymphadenopathy
* stage 3: proctocolitis
LGV is treated using doxycycline.
Other causes of genital ulcers
* Behcet's disease
* Carcinoma
* Granuloma inguinale: Klebsiella granulomatis*
*previously called Calymmatobacterium granulomatis
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="PID"/>PID</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Endometritis"/>ENDOMETRITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Vaginal Candidiasis"/>VAGINAL CANDIDIASIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Bacterial Vaginosis"/>BACTERIAL VAGINOSIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Trichomoniasis"/>TRICHOMONIASIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Uncomplicated Gonococcal Infections"/>UNCOMPLICATED GONOCOCCAL INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Chlamydia Trachomatis"/>CHLAMYDIA TRACHOMATIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Urethral Syndrome"/>ACUTE URETHRAL SYNDROME</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="UTI"/>UTI</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Pyelonephritis"/>ACUTE PYELONEPHRITIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Urosepsis"/>UROSEPSIS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Prostatitis"/>PROSTATITIS/ABSCESS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Renal Abscess"/>RENAL ABSCESS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Epididymitis"/>EPIDIDYMITIS</$button>
</center>
Geographic tongue is a benign, chronic condition of unknown cause. It is present in around 1-3% of the population and is more common in females.
;Features
* erythematous areas with a white-grey border (the irregular, smooth red areas are said to look like the outline of a map)
* some patients report burning after eating certain food
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd032b.jpg">
</center>
;Management
* reassurance about benign nature
!!!<center>''HEMATEMESIS, MELENA''</center>
<hr>
//A 56-year-old man is admitted to the hospital because of pneumonia; you are called because he “vomited blood.”//
* Immediate Questions
* What are the patient’s vital signs?
* Are there orthostatic changes in his pulse or blood pressure (indicates 10% volume loss)?
* If the patient has supine hypotension or resting tachycardia, fluid resuscitation must begin immediately.
* Does the patient have IV access?
* 16- to 18-gauge IV is adequate.
* Any H/O PUD, liver disease, or esophageal varices?
* Meds: NSAIDs, aspirin, steroids, and anticoagulants?
* Alcoholic?
* Last Hb, LFT
* What is the volume of hematemesis?
* Ask the nurse to save the emesis.
* A large amount indicates more urgency.
* Has there been any melena or bright red blood per rectum?
* Acute hemorrhagic gastritis. 15%
* CBC STAT, Type and cross-match. BUN, creatinine,PT/INR
* At least 4 units of (PRBCs).
* Nasogastric tube for gastric lavage.
* EGD should be performed as soon as possible after hemodynamic stabilization and adequate lavage.
* Most experts believe that it should be performed within 24 hours.
* Colonoscopy Should be performed if no convincing source of bleeding is noted on EGD.
* Admit and start protocol
Giardiasis is caused by the flagellate protozoan Giardia lamblia. It is spread by the faeco-oral route
Features
* often asymptomatic
* lethargy, bloating, abdominal pain
* flatulence
* non-bloody diarrhoea
* chronic diarrhoea, malabsorption and lactose intolerance can occur
* stool microscopy for trophozoite and cysts are classically negative, therefore duodenal fluid aspirates or 'string tests' (fluid absorbed onto swallowed string) are sometimes needed
Treatment is with metronidazole.
---
!!!<center>''GIARDIASIS''</center>
<hr>
* Metro 250-500 TDS 7-10 ds OR Tini 2 gm STAT
Gilbert's syndrome is an autosomal recessive* condition of defective bilirubin conjugation due to a deficiency of UDP glucuronosyltransferase. The prevalence is approximately 1-2% in the general population.
Features
* unconjugated hyperbilirubinaemia (i.e. not in urine)
* jaundice may only be seen during an intercurrent illness, exercise or fasting
Investigation and management
* investigation: rise in bilirubin following prolonged fasting or IV nicotinic acid
* no treatment required
*the exact mode of inheritance is still a matter of debate
!!GLP mimetics & DPP-4 Blockers
A number of new drugs to treat diabetes mellitus have become available in recent years. Much research has focused around the role of glucagon-like peptide-1 (GLP-1), a hormone released by the small intestine in response to an oral glucose load
Whilst it is well known that insulin resistance and insufficient B-cell compensation occur other effects are also seen in type 2 diabetes mellitus (T2DM). In normal physiology an oral glucose load results in a greater release of insulin than if the same load is given intravenously - this known as the incretin effect. This effect is largely mediated by GLP-1 and is known to be decreased in T2DM.
Increasing GLP-1 levels, either by the administration of an analogue (glucagon-like peptide-1, GLP-1 mimetics, e.g. exenatide) or inhibiting its breakdown (dipeptidyl peptidase-4 ,DPP-4 inhibitors - the gliptins), is therefore the target of two recent classes of drug.
;Glucagon-like peptide-1 (GLP-1) mimetics (e.g. exenatide)
Exenatide is an example of a glucagon-like peptide-1 (GLP-1) mimetic. These drugs increase insulin secretion and inhibit glucagon secretion. One of the major advances of GLP-1 mimetics is that they typically result in weight loss, in contrast to many medications such as insulin, sulfonylureas and thiazolidinediones. They are sometimes used in combination with insulin in T2DM to minimise weight gain.
Exenatide must be given by subcutaneous injection within 60 minutes before the morning and evening meals. It should not be given after a meal.
Liraglutide is the other GLP-1 mimetic currently available. One the main advantages of liraglutide over exenatide is that it only needs to be given once a day.
Both exenatide and liraglutide may be combined with metformin and a sulfonylurea. Standard release exenatide is also licensed to be used with basal insulin alone or with metformin. Please see the BNF for a more complete list of licensed indications.
;NICE state the following:
//Consider adding exenatide to metformin and a sulfonylurea if:
//
* //BMI >= 35 kg/m² in people of European descent and there are problems associated with high weight, or//
* //BMI < 35 kg/m² and insulin is unacceptable because of occupational implications or weight loss would benefit other comorbidities.//
NICE like patients to have achieved a 11 mmol/mol (1%) reduction in HbA1c and 3% weight loss after 6 months to justify the ongoing prescription of GLP-1 mimetics.
The major adverse effect of GLP-1 mimetics is nausea and vomiting. The Medicines and Healthcare products Regulatory Agency has issued specific warnings on the use of exenatide, reporting that is has been linked to severe pancreatitis in some patients.
;Dipeptidyl peptidase-4 (DPP-4) inhibitors (e.g. Vildagliptin, sitagliptin)
Key points
* oral preparation
* trials to date show that the drugs are relatively well tolerated with no increased incidence of hypoglycaemia
* do not cause weight gain
NICE guidelines on DPP-4 inhibitors
* NICE suggest that a DPP-4 inhibitor might be preferable to a thiazolidinedione if further weight gain would cause significant problems, a thiazolidinedione is contraindicated or the person has had a poor response to a thiazolidinedione
---
>SLIM like SITA
* Promotes Wt Loss despite increasing Insulin
---
>GLIPT x GLIT
*Gliptin increase Insulin, cause Wt Loss - Glitazone decrease resistance, cause Wt Gain
---
Glue ear describes otitis media with an effusion (other terms include serous otitis media). It is common with the majority of children having at least one episode during childhood
Risk factors
* male sex
* siblings with glue ear
* higher incidence in Winter and Spring
* bottle feeding
* day care attendance
* parental smoking
Features
* peaks at 2 years of age
* hearing loss is usually the presenting feature (glue ear is the commonest cause of conductive hearing loss and elective surgery in childhood)
* secondary problems such as speech and language delay, behavioural or balance problems may also be seen
Treatment options include:
* grommet insertion - to allow air to pass through into the middle ear and hence do the job normally done by the Eustachian tube. The majority stop functioning after about 10 months
* adenoidectomy
`Unilateral glue ear in an adult needs evaluation for a posterior nasal space tumour`
<div id="notecontent">The GMC guidelines about acting as a legal witness state that as doctors; your duty to the court overrides any duty to the patient. You must take reasonable steps to check the accuracy and make sure you give all the information you can. You must also use a language and terminology that people who are not medical will understand.<br><br>You may be acting as a professional witness (a witness of fact) who provides professional evidence of their clinical findings, observations and actions and reasons for these. These must be based on evidence, as far as possible, from the clinical records and notes made. In addition you may make some option but make sure it is clear this is not factual evidence.<br><br>You may be also acting as an expert witness. Within this role you must consider all evidence and form an opinion, to help the court, on specialist or technical matters that are within you expertise. In addition you must give an objective, unbiased opinion and be able to state the facts or assumptions on which it is based. If there is a range of opinions you must summarise these and explain how you came to yours.<br><br>Regardless of what type of witness you are, if at any time you change your mind you must inform the relevant people. In addition if you receive information about a person and you have reason to believe they have not given consent you should return this information and seek conformation that consent has been obtained.<br><br>You must not disclose confidential information to anyone who is not involved in the court proceedings.<br><br>If there is a possible conflict of interest you must make the relevant people aware and only continue to act as an expert witness if told to do so by the court.</div>
<div id="notecontent">Gonorrhoea is caused by the <span class="concept" data-cid="5851">Gram-negative diplococcus</span> <i>Neisseria gonorrhoeae</i>. Acute infection can occur on any mucous membrane surface, typically genitourinary but also rectum and pharynx. The incubation period of gonorrhoea is 2-5 days<br><br>Features<br><ul><li>males: urethral discharge, dysuria</li><li>females: cervicitis e.g. leading to vaginal discharge</li><li>rectal and pharyngeal infection is usually asymptomatic</li></ul><br>Microbiology<br><ul><li>immunisation is not possible and reinfection is common due to antigen variation of type IV pili (proteins which adhere to surfaces) and Opa proteins (surface proteins which bind to receptors on immune cells)</li></ul><br>Local complications that may develop include <span class="concept" data-cid="3176">urethral strictures</span>, epididymitis and salpingitis (hence may lead to infertility). Disseminated infection may occur - see below<br><br>Management<br><ul><li>ciprofloxacin used to be the treatment of choice. However, there is increased resistance to ciprofloxacin (around 36% in the UK) and therefore cephalosporins are now more widely used</li><li>there was a change in the 2019 British Society for Sexual Health and HIV (BASHH) guidelines. Previously the first-line treatment was IM ceftriaxone + oral azithromycin. The new first-line treatment is a single dose of <span class="concept" data-cid="646">IM ceftriaxone 1g</span> (i.e. no longer add azithromycin). If sensitivities are known (and the organism is sensitive to ciprofloxacin) then a single dose of oral ciprofloxacin 500mg should be given</li><li>if ceftriaxone is refused (e.g. needle-phobic) then <span class="concept" data-cid="10869">oral cefixime 400mg (single dose) + oral azithromycin 2g (single dose)</span> should be used</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd132b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd132.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd132b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Colorized scanning electron micrograph of <i>Neisseria gonorrhoeae</i>. Credit: NIAID</div><br>Disseminated gonococcal infection (DGI) and gonococcal arthritis may also occur, with gonococcal infection being the most common cause of septic arthritis in young adults. The pathophysiology of DGI is not fully understood but is thought to be due to haematogenous spread from mucosal infection (e.g. Asymptomatic genital infection). Initially there may be a classic triad of symptoms: tenosynovitis, migratory polyarthritis and dermatitis. Later complications include septic arthritis, endocarditis and perihepatitis (Fitz-Hugh-Curtis syndrome)<br><br>Key features of disseminated gonococcal infection<br><ul><li><span class="concept" data-cid="9908">tenosynovitis</span></li><li><span class="concept" data-cid="9908">migratory polyarthritis</span></li><li><span class="concept" data-cid="9908">dermatitis</span> (lesions can be maculopapular or vesicular)</li></ul></div>
>PASTURES on BASEMENTs
* good PASTURES affect only BASEMENT membranes (`only Lungs & Kidneys`)
* Cough, Hemoptysis, SOB, RPGN, Hematuria
;Ix
* First: AntiGBM antibodies
* Best: Linear deposits on Biopsy
;Rx
>Hemoptysis + Hematuria = Urgent Plasmapheresis
*Also Steroids
Gastro-oesophageal reflux disease (GORD) may be defined as symptoms of oesophagitis secondary to refluxed gastric contents
NICE recommend that GORD which has not been investigated with endoscopy should be treated as per the DysPepsia guidelines
;Endoscopically proven oesophagitis
* full dose proton pump inhibitor (PPI) for 1-2 months
* if response then low dose treatment as required
* if no response then double-dose PPI for 1 month
;Endoscopically negative reflux disease
* full dose PPI for 1 month
* if response then offer low dose treatment, possibly on an as-required basis, with a limited number of repeat prescriptions
* if no response then H2RA or prokinetic for one month
;Complications
* oesophagitis
* ulcers
* AneMia
* benign strictures
* Barrett's oesophagus
* oesophageal carcinoma
Gout is a form of inflammatory arthritis. Patients typically have episodes lasting several days when their gout flares and are often symptom-free between episodes. The acute episodes typically develop maximal intensity with 12 hours/ The main features it presents with are:
* pain: this is often very significant
* swelling
* erythema
Around 70% of first presentations affect the 1st metatarsophalangeal (MTP) joint. Attacks of gout affecting this area were historically called podagra. Other commonly affected joints include:
* ankle
* wrist
* knee
If untreated repeated acute episodes of gout can damage the joints resulting in a more chronic joint problem.
Radiological features of gout include:
* joint effusion is an early sign
* well-defined 'punched-out' erosions with sclerotic margins ina juxta-articular distribution, often with overhanging edges
* relative preservation of joint space until late disease
* eccentric erosions
* no periarticular osteopenia (in contrast to rheumatoid arthritis)
* soft tissue tophi may be seen
<div id="body_content">
<br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb111b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb111.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb111b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">X ray of a patient with gout affecting his feet. It demonstrates juxta-articular erosive changes around the 1st MTP joint with overhanging edges and associated with a moderate soft tissue swelling. The joint space is maintained.</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb185b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb185.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb185b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">X-ray of a patient with gout affecting his hands. There are multiple periarticular erosions bilaterally with adjacent large soft tissue masses and relatively preserved joint spaces. In the right hand, these findings are most prominent at the 1st interphalangeal, 2nd-4th proximal interphalangeal, 1st-3rd metacarpophalangeal and carpometacarpal joints. In the left hand, the findings are most prominent at the ulnar styloid, scapholunate joint, first and fifth carpometacarpal joints, second and fifth metacarpophalangeal joints and 1st interphalangeal joint.</div></div>
!!Drugs Exacerbating Gout
* ThiaZide diuretics
* Sulphonamides
* Ethambutol
* Some cytotoxic drugs
<div id="notecontent">Gout is a form of microcrystal synovitis caused by the deposition of monosodium urate monohydrate in the synovium. It is caused by chronic hyperuricaemia (uric acid > 450 µmol/l)<br><br>Acute management<br><ul><li>NSAIDs or <span class="concept" data-cid="2660">colchicine</span> are first-line</li><li>the maximum dose of NSAID should be prescribed until 1-2 days after the symptoms have settled. Gastroprotection (e.g. a proton pump inhibitor) may also be indicated</li><li>colchicine* has a slower onset of action. The main side-effect is <span class="concept" data-cid="2777">diarrhoea</span></li><li><span class="concept" data-cid="4451">oral steroids</span> may be considered if NSAIDs and colchicine are contraindicated. A dose of prednisolone 15mg/day is usually used</li><li>another option is intra-articular steroid injection</li><li><span class="concept" data-cid="10248">if the patient is already taking allopurinol it should be continued</span></li></ul><br>Indications for urate-lowering therapy (ULT)<br><ul><li>the British Society of Rheumatology Guidelines now advocate offering <span id="concept_popover_id_5124" class="concept concept-0 trigger-link" data-cid="5124" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5124'>You've never been tested on this concept</div><br><div id='div_concept_rating5124' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="Offer allopurinol to all patients after their first attack of gout ">urate-lowering therapy to all patients after their <b>first attack of gout</b></span></li><li>ULT is <i>particularly</i> recommended if:</li><li>→ >= 2 attacks in 12 months</li><li>→ tophi</li><li>→ renal disease</li><li>→ uric acid renal stones</li><li>→ prophylaxis if on cytotoxics or diuretics</li></ul><br>Urate-lowering therapy<br><ul><li>allopurinol is first-line</li><li>it has traditionally been taught that urate-lowering therapy should not be started until 2 weeks after an acute attack, as starting too early may precipitate a further attack. The evidence base to support this however looks weak</li><li>in 2017 the BSR updated their guidelines. They still support a delay in starting urate-lowering therapy because it is better for a patient to make long-term drug decisions whilst not in pain</li><li>initial dose of 100 mg od, with the dose titrated every few weeks to aim for a serum uric acid of < 300 µmol/l. Lower initial doses should be given if the patient has a reduced eGFR</li><li><span id="concept_popover_id_884" class="concept concept-1 trigger-link" data-cid="884" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative884'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating884' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(147,255,0)'>Importance: <b>71</b></span> </div>" data-original-title="NSAID or colchicine 'cover' should be used when starting allopurinol">colchicine cover</span> should be considered when starting allopurinol. <span id="concept_popover_id_884" class="concept concept-1 trigger-link" data-cid="884" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative884'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating884' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(147,255,0)'>Importance: <b>71</b></span> </div>" data-original-title="NSAID or colchicine 'cover' should be used when starting allopurinol">NSAIDs</span> can be used if colchicine cannot be tolerated. The BSR guidelines suggest this may need to be continued for 6 months</li><li>the second-line agent when allopurinol is not tolerated or ineffective is febuxostat (also a xanthine oxidase inhibitor)</li><li>in refractory cases other agents may be tried:<ul><li>uricase (urate oxidase) is an enzyme that catalyzes the conversion of urate to the degradation product allantoin. It is present in certain mammals but not humans</li><li>in patients who have persistent symptomatic and severe gout despite the adequate use of urate-lowering therapy, pegloticase (polyethylene glycol modified mammalian uricase) can achieve rapid control of hyperuricemia. It is given as an infusion once every two weeks</li></ul></li></ul><br>Lifestyle modifications<br><ul><li>reduce alcohol intake and avoid during an acute attack</li><li>lose weight if obese</li><li>avoid food high in purines e.g. Liver, kidneys, seafood, oily fish (mackerel, sardines) and yeast products</li></ul><br>Other points<br><ul><li>consideration should be given to stopping precipitating drugs (such as <span class="concept" data-cid="9134">thiazides</span>)</li><li>losartan has a specific uricosuric action and may be particularly suitable for the many patients who have coexistent hypertension</li><li>increased vitamin C intake (either supplements or through normal diet) may also decrease serum uric acid levels</li></ul><br>*inhibits microtubule polymerization by binding to tubulin, interfering with mitosis. Also inhibits neutrophil motility and activity</div>
<div id="notecontent">Gout is a form of microcrystal synovitis caused by the deposition of monosodium urate monohydrate in the synovium. It is caused by chronic hyperuricaemia (uric acid > 450 µmol/l)<br><br>Acute management<br><ul><li>NSAIDs or <span class="concept" data-cid="2660">colchicine</span> are first-line</li><li>the maximum dose of NSAID should be prescribed until 1-2 days after the symptoms have settled. Gastroprotection (e.g. a proton pump inhibitor) may also be indicated</li><li>colchicine* has a slower onset of action. The main side-effect is <span class="concept" data-cid="2777">diarrhoea</span></li><li><span class="concept" data-cid="4451">oral steroids</span> may be considered if NSAIDs and colchicine are contraindicated. A dose of prednisolone 15mg/day is usually used</li><li>another option is intra-articular steroid injection</li><li><span class="concept" data-cid="10248">if the patient is already taking allopurinol it should be continued</span></li></ul><br>Indications for urate-lowering therapy (ULT)<br><ul><li>the British Society of Rheumatology Guidelines now advocate offering <span id="concept_popover_id_5124" class="concept concept-1 trigger-link" data-cid="5124" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5124'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating5124' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(25,255,0)'>Importance: <b>95</b></span> </div>" data-original-title="Offer allopurinol to all patients after their first attack of gout ">urate-lowering therapy to all patients after their <b>first attack of gout</b></span></li><li>ULT is <i>particularly</i> recommended if:</li><li>→ >= 2 attacks in 12 months</li><li>→ tophi</li><li>→ renal disease</li><li>→ uric acid renal stones</li><li>→ prophylaxis if on cytotoxics or diuretics</li></ul><br>Urate-lowering therapy<br><ul><li>allopurinol is first-line</li><li>it has traditionally been taught that urate-lowering therapy should not be started until 2 weeks after an acute attack, as starting too early may precipitate a further attack. The evidence base to support this however looks weak</li><li>in 2017 the BSR updated their guidelines. They still support a delay in starting urate-lowering therapy because it is better for a patient to make long-term drug decisions whilst not in pain</li><li>initial dose of 100 mg od, with the dose titrated every few weeks to aim for a serum uric acid of < 300 µmol/l. Lower initial doses should be given if the patient has a reduced eGFR</li><li><span id="concept_popover_id_884" class="concept concept-1 trigger-link" data-cid="884" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative884'>You've been tested on this concept once, 6 days ago, and got the associated question incorrect.</div><br><div id='div_concept_rating884' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(147,255,0)'>Importance: <b>71</b></span> </div>" data-original-title="NSAID or colchicine 'cover' should be used when starting allopurinol">colchicine cover</span> should be considered when starting allopurinol. <span id="concept_popover_id_884" class="concept concept-1 trigger-link" data-cid="884" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative884'>You've been tested on this concept once, 6 days ago, and got the associated question incorrect.</div><br><div id='div_concept_rating884' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(147,255,0)'>Importance: <b>71</b></span> </div>" data-original-title="NSAID or colchicine 'cover' should be used when starting allopurinol">NSAIDs</span> can be used if colchicine cannot be tolerated. The BSR guidelines suggest this may need to be continued for 6 months</li><li>the second-line agent when allopurinol is not tolerated or ineffective is febuxostat (also a xanthine oxidase inhibitor)</li><li>in refractory cases other agents may be tried:<ul><li>uricase (urate oxidase) is an enzyme that catalyzes the conversion of urate to the degradation product allantoin. It is present in certain mammals but not humans</li><li>in patients who have persistent symptomatic and severe gout despite the adequate use of urate-lowering therapy, pegloticase (polyethylene glycol modified mammalian uricase) can achieve rapid control of hyperuricemia. It is given as an infusion once every two weeks</li></ul></li></ul><br>Lifestyle modifications<br><ul><li>reduce alcohol intake and avoid during an acute attack</li><li>lose weight if obese</li><li>avoid food high in purines e.g. Liver, kidneys, seafood, oily fish (mackerel, sardines) and yeast products</li></ul><br>Other points<br><ul><li>consideration should be given to stopping precipitating drugs (such as <span class="concept" data-cid="9134">thiazides</span>)</li><li>losartan has a specific uricosuric action and may be particularly suitable for the many patients who have coexistent hypertension</li><li>increased vitamin C intake (either supplements or through normal diet) may also decrease serum uric acid levels</li></ul><br>*inhibits microtubule polymerization by binding to tubulin, interfering with mitosis. Also inhibits neutrophil motility and activity</div>
`Commencement of ULT is best delayed until inflammation has settled as ULT is better discussed when the patient is not in pain
In circumstances where attacks are so frequent that this is not possible, the initiation of allopurinol can be considered before inflammation has completely settled.`
<div class="twocolumns">
<$list filter="[tag[GP]sort[title]]"/>
</div>
<div class="twocolumns">
<$list filter="[tag[GP]tag[Drugs]sort[title]]"/>
</div>
* papular lesions that are often slightly hyperpigmented and depressed centrally
* typically occur on the dorsal surfaces of the hands and feet, and on the extensor aspects of the arms and legs
<center>
<img width=300 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd096b.jpg">
</center>
A number of associations have been proposed to conditions such as diabetes mellitus but there is only weak evidence for this
<div id="body_content">
<span class="concept" data-cid="830">Graves' disease is the most common cause of thyrotoxicosis</span>. It is typically seen in women aged 30-50 years.<br><br>Features<br><ul><li>typical features of thyrotoxicosis</li><li>specific signs limited to Grave's (see below)</li></ul><br>Features seen in Graves' but not in other causes of thyrotoxicosis<br><ul><li>eye signs (30% of patients)<ul><li><span class="concept" data-cid="4479">exophthalmos</span></li><li>ophthalmoplegia</li></ul></li><li><span class="concept" data-cid="10409">pretibial myxoedema</span></li><li>thyroid acropachy, a triad of:<ul><li><span class="concept" data-cid="3816">digital clubbing</span></li><li>soft tissue swelling of the hands and feet</li><li>periosteal new bone formation</li></ul></li></ul><br>Autoantibodies<br><ul><li><span class="concept" data-cid="2324">TSH receptor stimulating antibodies</span> (90%)</li><li>anti-thyroid peroxidase antibodies (75%)</li></ul></div>
<div id="notecontent">Despite many trials there is no clear guidance on the optimal management of Graves' disease. Treatment options include titration of anti-thyroid drugs (ATDs, for example carbimazole), block-and-replace regimes, radioiodine treatment and surgery. Propranolol is often given initially to block adrenergic effects<br><br>ATD titration<br><ul><li>carbimazole is started at 40mg and reduced gradually to maintain euthyroidism</li><li>typically continued for 12-18 months</li><li>patients following an ATD titration regime have been shown to suffer fewer side-effects than those on a block-and-replace regime</li></ul><br>Block-and-replace<br><ul><li>carbimazole is started at 40mg</li><li>thyroxine is added when the patient is euthyroid</li><li>treatment typically lasts for 6-9 months</li></ul><br>The major complication of carbimazole therapy is agranulocytosis<br><br>Radioiodine treatment<br><ul><li>contraindications include pregnancy (should be avoided for 4-6 months following treatment) and age < 16 years. Thyroid eye disease is a relative contraindication, as it may worsen the condition</li><li>the proportion of patients who become hypothyroid depends on the dose given, but as a rule the majority of patient will require thyroxine supplementation after 5 years</li></ul></div>
---
>CARBS are AGRI products
*CARBamazapine and CARBimazole cause AGRAnulocytosis
---
<div id="notecontent">Group B <i>Streptococcus</i> (GBS) is the <span class="concept" data-cid="3860">most common cause of early-onset severe infection in the neonatal period</span>. It is thought around 20-40% of mothers have GBS present in their bowel flora and may therefore be thought of as 'carriers' of GBS. Infants may be exposed to maternal GBS during labour and subsequently develop potentially serious infections.<br><br>Risk factors for Group B <i>Streptococcus</i> (GBS) infection:<br><ul><li>prematurity</li><li>prolonged rupture of the membranes</li><li>previous sibling GBS infection</li><li>maternal pyrexia e.g. secondary to chorioamnionitis</li></ul><br><b>Management</b><br><br>The Royal College of Obstetricians and Gynaecologists (RCOG) published guidelines on GBS in 2017.<br><br>The main points are as follows:<br><ul><li>universal screening for GBS should not be offered to all women</li><li>the guidelines also state a maternal request is not an indication for screening</li><li><span class="concept" data-cid="9776">women who've had GBS detected in a previous pregnancy</span> should be informed that their risk of maternal GBS carriage in this pregnancy is 50%. They should be <span class="concept" data-cid="9776">offered maternal intravenous antibiotic prophylaxis (IAP) OR testing in late pregnancy and then antibiotics if still positive</span></li><li>if women are to have swabs for GBS this should be offered at 35-37 weeks or 3-5 weeks prior to the anticipated delivery date</li><li><span class="concept" data-cid="998">maternal intravenous antibiotic prophylaxis should be offered to women with a previous baby with early- or late-onset GBS disease</span></li><li>maternal intravenous antibiotic prophylaxis should be offered to women in preterm labour regardless of their GBS status</li><li><span class="concept" data-cid="3571">women with a pyrexia during labour (>38ºC) should also be given intravenous antibiotics</span></li><li><span class="concept" data-cid="9147">benzylpenicillin</span> is the antibiotic of choice for GBS prophylaxis</li></ul><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd135b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd135.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd135b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Group B streptococcus bacteria. Credit: NIAID</div></div>
Guillain-Barre syndrome describes an immune-mediated demyelination of the peripheral nervous system often triggered by an infection (classically Campylobacter jejuni).
The characteristic features of Guillain-Barre syndrome is progressive weakness of all four limbs.
* the weakness is classically ''ascending'' i.e. the lower extremities are affected first, however it tends to affect proximal muscles earlier than the distal ones
* reflexes are reduced or absent
* sensory symptoms tend to be mild (e.g. distal paraesthesia) with very few sensory signs
* around 65% of patients experience back/leg pain in the initial stages of the illness
Other features
* there may be a history of gastroenteritis
* respiratory muscle weakness
* cranial nerve involvement e.g. diplopia
* autonomic involvement: e.g. urinary retention, diarrhoea
Less common findings
* papilloedema: thought to be secondary to reduced CSF resorption
Investigations
* lumbar puncture
** rise in protein with a normal white blood cell count (albuminocytologic dissociation) - found in 66%
* nerve condution studies may be performed
!!Guttate psoriasis
is more common in children and adolescents. It may be precipitated by a <span class="concept" data-cid="7732">streptococcal infection</span> 2-4 weeks prior to the lesions appearing.<br><br>Features<br><ul><li>tear drop papules on the trunk and limbs</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd145b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd145.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd145b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd146b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd146.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd146b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd147b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd147.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd147b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Management<br><ul><li>most cases resolve spontaneously within 2-3 months</li><li>there is no firm evidence to support the use of antibiotics to eradicate streptococcal infection</li><li>topical agents as per psoriasis</li><li>UVB phototherapy</li><li>tonsillectomy may be necessary with recurrent episodes</li></ul><br><b>Differentiating guttate psoriasis and pityriasis rosea</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th>Guttate psoriasis</th><th>Pityriasis rosea</th></tr></thead><tbody><tr><td><b>Prodrome</b></td><td>Classically preceded by a streptococcal sore throat 2-4 weeks</td><td>Many patients report recent respiratory tract infections but this is not common in questions</td></tr><tr><td><b>Appearance</b></td><td>'Tear drop', scaly papules on the trunk and limbs</td><td>Herald patch followed 1-2 weeks later by multiple erythematous, slightly raised oval lesions with a fine scale confined to the outer aspects of the lesions. <br><br>May follow a characteristic distribution with the longitudinal diameters of the oval lesions running parallel to the line of Langer. This may produce a 'fir-tree' appearance</td></tr><tr><td><b>Treatment / <br>natural history </b></td><td>Most cases resolve spontaneously within 2-3 months<br>Topical agents as per psoriasis<br>UVB phototherapy</td><td>Self-limiting, resolves after around 6 weeks</td></tr></tbody></table></div>
---
>GUT Vs. PIT
*DDs: GuTTate & PiTyriasis
---
>GUT starts GUT
>Streptococcal soreTHROAT usually precedes GuTTate
<div id="notecontent">Gynaecomastia describes an abnormal amount of breast tissue in males and is usually caused by an increased oestrogen:androgen ratio. It is important to differentiate the causes of galactorrhoea (due to the actions of prolactin on breast tissue) from those of gynaecomastia<br><br>Causes of gynaecomastia<br><ul><li>physiological: normal in puberty</li><li>syndromes with androgen deficiency: Kallman's, Klinefelter's</li><li>testicular failure: e.g. mumps</li><li><span class="concept" data-cid="3373">liver disease</span></li><li><span class="concept" data-cid="10785">testicular cancer e.g. seminoma secreting hCG</span></li><li>ectopic tumour secretion</li><li>hyperthyroidism</li><li>haemodialysis</li><li>drugs: see below</li></ul><br>Drug causes of gynaecomastia<br><ul><li>spironolactone (most common drug cause)</li><li>cimetidine</li><li><span class="concept" data-cid="3654">digoxin</span></li><li>cannabis</li><li>finasteride</li><li>GnRH agonists e.g. <span id="concept_popover_id_10952" class="concept concept-0 trigger-link" data-cid="10952" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10952'>You've never been tested on this concept</div><br><div id='div_concept_rating10952' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(56,255,0)'>Importance: <b>89</b></span> </div>" data-original-title="GnRH agonists (e.g. goserelin) used in the management of prostate cancer may result in gynaecomastia">goserelin</span>, buserelin</li><li>oestrogens, anabolic steroids</li></ul><br>Very rare drug causes of gynaecomastia<br><ul><li>tricyclics </li><li>isoniazid</li><li>calcium channel blockers</li><li>heroin</li><li>busulfan</li><li>methyldopa</li></ul></div>
Drugs Causing Gynaecomastia
* DiGoxin
* SpironoLactone
!!!<center>''H PYLORI INFECTION''</center>
<hr>
* Amox 1 g BD PLUS Clarithro 500 BD/Tini/Metro 400 BD PLUS Panto 40 BD for 10-14d OR Clarithro 500 BD PLUS Metro 400 BD PLUS Panto 40 BD. Recurrence: Tetracycline 500 mg Q6H PLUS Metro 500 mg PO Q8H PLUS Bismuth subsalicylate 525 mg Q6H PLUS Panto 40 mg Q12H
<div id="notecontent">Haemorrhoidal tissue is part of the normal anatomy which contributes to anal continence. These mucosal vascular cushions are found in the left lateral, right posterior and right anterior portions of the anal canal (3 o'clock, 7'o'clock and 11 o'clock respectively). Haemorrhoids are said to exist when they become enlarged, congested and symptomatic<br><br>Clinical features<br><ul><li>painless rectal bleeding is the most common symptom</li><li>pruritus</li><li>pain: usually not significant unless piles are thrombosed</li><li>soiling may occur with third or forth degree piles</li></ul><br><b>Types of haemorrhoids</b><br><br>External<br><ul><li>originate below the dentate line</li><li>prone to thrombosis, may be painful</li></ul><br>Internal<br><ul><li>originate above the dentate line</li><li>do not generally cause pain</li></ul><br>Grading of internal haemorrhoids<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Grade I</th><th>Do not prolapse out of the anal canal</th></tr></thead><tbody><tr><td>Grade II</td><td>Prolapse on defecation but reduce spontaneously</td></tr><tr><td>Grade III</td><td>Can be manually reduced</td></tr><tr><td>Grade IV</td><td>Cannot be reduced</td></tr></tbody></table></div><br>Management<br><ul><li>soften stools: increase dietary fibre and fluid intake</li><li>topical local anaesthetics and steroids may be used to help symptoms</li><li>outpatient treatments: rubber band ligation is superior to injection sclerotherapy</li><li>surgery is reserved for large symptomatic haemorrhoids which do not respond to outpatient treatments</li><li>newer treatments: Doppler guided haemorrhoidal artery ligation, stapled haemorrhoidopexy</li></ul><br>Acutely thrombosed external haemorrhoids<br><ul><li>typically present with significant pain</li><li>examination reveals a purplish, oedematous, tender subcutaneous perianal mass</li><li>if patient presents within 72 hours then referral should be considered for excision. Otherwise patients can usually be managed with stool softeners, ice packs and analgesia. Symptoms usually settle within 10 days</li></ul></div>
<div id="notecontent">Hand, foot and mouth disease is a self-limiting condition affecting children. It is caused by the intestinal viruses of the Picornaviridae family (most commonly <span class="concept" data-cid="1121">coxsackie A16 and enterovirus</span> 71). It is very contagious and typically occurs in outbreaks at nursery<br><br><span class="concept" data-cid="3939">Clinical features</span><br><ul><li>mild systemic upset: sore throat, fever</li><li>oral ulcers</li><li>followed later by vesicles on the palms and soles of the feet</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd063b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd063.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd063b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd064b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd064.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd064b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Management<br><ul><li><span class="concept" data-cid="7263">symptomatic treatment only</span>: general advice about hydration and analgesia</li><li>reassurance no link to disease in cattle</li><li><span class="concept" data-cid="1122">children do not need to be excluded from school</span><ul><li>the HPA recommends that children who are unwell should be kept off school until they feel better</li><li>they also advise that you contact them if you suspect that there may be a large outbreak.</li></ul></li></ul></div>
!!Hashimoto's thyroiditis (chronic autoimmune thyroiditis)
<div id="body_content">
is an autoimmune disorder of the thyroid gland. It is typically associated with hypothyroidism although there may be a transient thyrotoxicosis in the acute phase. It is 10 times more common in women<br><br><span class="concept" data-cid="438">Features</span><br><ul><li>features of hypothyroidism</li><li>goitre: firm, non-tender</li><li>anti-thyroid peroxidase (TPO) and also anti-thyroglobulin (Tg) antibodies</li></ul><br>Associations<br><ul><li>other <span class="concept" data-cid="5131">autoimmune conditions</span> e.g. coeliac disease, type 1 diabetes mellitus, vitiligo</li><li>Hashimoto's thyroiditis is associated with the development of <span class="concept" data-cid="2206">MALT lymphoma</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Venn diagram showing how different causes of thyroid dysfunction may manifest. Note how many causes of hypothyroidism may have an initial thyrotoxic phase.</div></div>
<div id="notecontent">Glycosylated haemoglobin (HbA1c) is the most widely used measure of long-term glycaemic control in diabetes mellitus. HbA1c is produced by the glycosylation of haemoglobin at a rate proportional to the glucose concentration. The level of HbA1c therefore is dependant on<br><ul><li>red blood cell lifespan</li><li>average blood glucose concentration</li></ul><br>A number of conditions can interfere with accurate HbA1c interpretation:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Lower-than-expected levels of HbA1c</b> (due to reduced red blood cell lifespan)</th><th><b>Higher-than-expected levels of HbA1c</b> (due to increased red blood cell lifespan)</th></tr></thead><tbody><tr><td>Sickle-cell anaemia<br>GP6D deficiency <br>Hereditary spherocytosis</td><td>Vitamin B12/folic acid deficiency<br>Iron-deficiency anaemia<br>Splenectomy</td></tr></tbody></table></div><br>HbA1c is generally thought to reflect the blood glucose over the previous '3 months' although there is some evidence it is weighed more strongly to glucose levels of the past 2-4 weeks. NICE recommend <i>'HbA1c should be checked every 3-6 months until stable, then 6 monthly'.</i><br><br>The relationship between HbA1c and average blood glucose is complex but has been studied by the Diabetes Control and Complications Trial (DCCT). A new internationally standardised method for reporting HbA1c has been developed by the International Federation of Clinical Chemistry (IFCC). This will report HbA1c in mmol per mol of haemoglobin without glucose attached.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>HBA1c<br>(%)</b></th><th><b>Average plasma glucose<br>(mmol/l)</b></th><th><b>IFCC-HbA1c (mmol/mol)</b></th></tr></thead><tbody><tr><td>5</td><td>5.5</td></tr><tr><td>6</td><td>7.5</td><td>42</td></tr><tr><td>7</td><td>9.5</td><td>53</td></tr><tr><td>8</td><td>11.5</td><td>64</td></tr><tr><td>9</td><td>13.5</td><td>75</td></tr><tr><td>10</td><td>15.5</td></tr><tr><td>11</td><td>17.5</td></tr><tr><td>12</td><td>19.5</td></tr></tbody></table></div><br>From the above we can see that average plasma glucose = (2 * HbA1c) - 4.5</div>
!!Hepatocellular carcinoma (HCC)
is the third most common cause of cancer worldwide. Chronic hepatitis B is the most common cause of HCC worldwide with chronic hepatitis C being the most common cause in Europe.
The main risk factor for developing HCC is liver cirrhosis, for example secondary* to hepatitis B & C, alcohol, haemochromatosis and primary biliary cirrhosis. Other risk factors include:
* alpha-1 antitrypsin deficiency
* hereditary tyrosinosis
* glycogen storage disease
* aflatoxin
* drugs: oral contraceptive pill, anabolic steroids
* porphyria cutanea tarda
* male sex
* diabetes mellitus, metabolic syndrome
Features
* tends to present late
* features of liver cirrhosis or failure may be seen: jaundice, ascites, RUQ pain, hepatomegaly, pruritus, splenomegaly
* possible presentation is decompensation in a patient with chronic liver disease
* raised AFP
Screening with ultrasound (+/- alpha-fetoprotein) should be considered for high risk groups such as:
* patients liver cirrhosis secondary to hepatitis B & C or haemochromatosis
* men with liver cirrhosis secondary to alcohol
Management options
* early disease: surgical resection
* liver transplantation
* radiofrequency ablation
* transarterial chemoembolisation
* sorafenib: a multikinase inhibitor
*Wilson's disease is an exception
<div id="notecontent">Head and neck cancer is an umbrella term. It typically includes:<br><ul><li>Oral cavity cancers</li><li>Cancers of the pharynx (including the oropharynx, hypopharynx and nasopharynx)</li><li>Cancers of the larynx</li></ul><br>Features<br><ul><li>neck lump</li><li>hoarseness</li><li>persistent sore throat</li><li>persistent mouth ulcer</li></ul><br><br><b>NICE suspected cancer pathway referral criteria (for an appointment within 2 weeks)</b><br><br>Laryngeal cancer<br><ul><li>Consider a suspected cancer pathway referral (for an appointment within 2 weeks) for laryngeal cancer in people aged 45 and over with:<ul><li>persistent unexplained hoarseness or</li><li>an unexplained lump in the neck</li></ul></li></ul><br>Oral cancer<br><ul><li>Consider a suspected cancer pathway referral (for an appointment within 2 weeks) for oral cancer in people with either:<ul><li>unexplained ulceration in the oral cavity lasting for more than 3 weeks or</li><li>a persistent and unexplained lump in the neck.</li></ul></li><li>Consider an urgent referral (for an appointment within 2 weeks) for assessment for possible oral cancer by a dentist in people who have either:<ul><li>a lump on the lip or in the oral cavity or</li><li>a red or red and white patch in the oral cavity consistent with erythroplakia or erythroleukoplakia. </li></ul></li></ul><br>Thyroid cancer<br><ul><li>Consider a suspected cancer pathway referral (for an appointment within 2 weeks) for thyroid cancer in people with an unexplained thyroid lump.</li></ul></div>
---
`Unexplained, unilateral ear ache for more than 4 weeks with unremarkable otoscopy should be referred under the 2 week wait`
!!<center>''HEAD AND NECK INFECTIONS''</center>
<hr>
!!!<center>''FACIAL CELLULITIS''</center>
<hr>
* Ceftriaxone 1 gm IV Q24H/Taxim 2gm Q6H OR Levoflox 750 OR Moxiflox 400 OD 1-2 wks
<hr>
!!!<center>''ORBITAL CELLULITIS''</center>
<hr>
* Ceftriaxone 1 gm IV Q24H/Taxim 2gm Q6H OR Levoflox 750 OR Moxiflox 400 OD for 7d-6wks
<hr>
!!!<center>''SINUSITIS''</center>
<hr>
* Augmentin 1gm (2 gm if severe) BD 10 ds OR Doxy 200 BD 3ds, then 100 BD 11 ds OR Cefpodoxime 200 BD OR Moxiflox 400 OD OR Levoflox 750 OD
<hr>
!!!<center>''EXTERNAL OTITIS''</center>
<hr>
* Pip 4.5 Q8H IV + Cipro 400 IV Q8H/Levoflox 750 IV OD/Amikacin Q24H IV 4-6 wks OR Levoflox 750 OD 4-6 wks OR Amox 1gm/10mg/kg PO Q8H 10 ds
<hr>
!!!<center>''ACUTE OTITIS MEDIA''</center>
<hr>
* Ceftriaxone 50 mg/kg IM one dose OR Clarithro 7.5mg/kg Q12H 10 ds OR Azithro 10mg/kg PO day 1 then 5mg/kg PO daily 4 ds OR Augmentin 90mg/kg/d PO in 2 div doses 10 ds OR Cefuroxime 15mg/kg PO Q12H OR Cefpodoxime 5mg/kg PO Q12H OR Moxiflox 400 PO q24h 2 wks OR Levoflox 500 PO q24h 2 wks
<hr>
!!!<center>''MASTOIDITIS''</center>
<hr>
* Ceftriaxone 1-2 gm IV q24h 2 wks OR Cefotaxim 2gm IV q6h 2 wks
<hr>
!!!<center>''PHARYNGITIS''</center>
<hr>
* Amox 500 TDS 7-10 ds OR Azithro 5 day course
<hr>
!!!<center>''DIPHTHERIA PHARYNGITIS''</center>
<hr>
* Erythromycin 500 mg IV QID for 14 ds or Penicillin G 50,000 units/kg max of 1.2 million IV 12 hourly. Diptheria antitoxin: Horse serum. <48 hrs:20,000-40,000 units, Nasopharyngeal membranes:40,000-60,000 units >3 days & bull neck : 80,000-1,20,000 units
<hr>
!!!<center>''EPIGLOTTITIS''</center>
<hr>
* Cefotaxime 50 mg/kg IV 8 hourly or ceftriaxone 50 mg/kg IV 24 hourly OR Levofloxacin 10 mg/kg IV 24 hourly + clindamycin 7.5 mg/kg IV 6 hourly.
<hr>
!!!<center>''LARYNGITIS''</center>
<hr>
* No Abx
<hr>
!!!<center>''ORAL CANDIDIASIS''</center>
<hr>
* Fluconazole 200 mg PO 1 dose then 100 mg OD
<hr>
!!!<center>''MOUTH ULCERS / VESCICLES''</center>
<hr>
* Clinda 600 TDS 2wks OR Augmentin 625 TDS 2 wks
<hr>
!!!<center>''GINGIVOSTOMATITIS / HERPES LABIALIS''</center>
<hr>
* Acyclovir 400 5 times per day 1 wk OR Valacyclovir 500 mg BD 1 wk OR Famcyclovir 500 BD 1 wk
<hr>
!!!<center>''DEEP NECK INFECTIONS''</center>
<hr>
* Pip 4.5 Q8H IV 2wks OR Clinda 300 TDS 2 wks OR Doxy 200 BD 3ds, then 100 BD 11 ds
<hr>
!!!<center>''SEVERE DENTAL INFECTIONS''</center>
<hr>
* Pip 4.5 Q8H IV 2wks OR Clinda TDS 2 wks OR Doxy 200 BD 3ds, then 100 BD 11 ds
<hr>
!!!<center>''EPIGLOTTITIS''</center>
<hr>
* Ceftriaxone 1 gm q24h 2wks OR Levoflox 500/Moxiflox 400 OD IV 2 wks OR Levoflox 750/Moxiflox 400 OD 1-2 wks
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Condition</th><th>Notes</th></tr></thead><tbody><tr><td><b><span class="concept" data-cid="7822">Migraine</span></b></td><td>Recurrent, severe headache which is usually unilateral and throbbing in nature<br>May be be associated with aura, nausea and photosensitivity<br>Aggravated by, or causes avoidance of, routine activities of daily living. Patients often describe 'going to bed'.<br>In women may be associated with menstruation</td></tr><tr><td><b><span class="concept" data-cid="7823">Tension headache</span></b></td><td>Recurrent, non-disabling, bilateral headache, often described as a 'tight-band'<br>Not aggravated by routine activities of daily living</td></tr><tr><td><b><span class="concept" data-cid="7824">Cluster headache</span>*</b></td><td>Pain typical occurs once or twice a day, each episode lasting 15 mins - 2 hours with clusters typically lasting 4-12 weeks<br>Intense pain around one eye (recurrent attacks 'always' affect same side)<br>Patient is restless during an attack<br>Accompanied by redness, lacrimation, lid swelling<br>More common in men and smokers</td></tr><tr><td><b><span class="concept" data-cid="7825">Temporal arteritis</span></b></td><td>Typically patient > 60 years old<br>Usually rapid onset (e.g. < 1 month) of unilateral headache<br>Jaw claudication (65%)<br>Tender, palpable temporal artery<br>Raised ESR</td></tr><tr><td><b><span class="concept" data-cid="7826">Medication overuse headache</span></b></td><td>Present for 15 days or more per month<br>Developed or worsened whilst taking regular symptomatic medication<br>Patients using opioids and triptans are at most risk<br>May be psychiatric co-morbidity</td></tr></tbody></table></div><br><b>Other causes of headache</b><br><br>Acute single episode<br><ul><li>meningitis</li><li>encephalitis</li><li><span class="concept" data-cid="7829">subarachnoid haemorrhage</span></li><li>head injury</li><li><span class="concept" data-cid="7828">sinusitis</span></li><li><span class="concept" data-cid="7827">glaucoma (acute closed-angle)</span></li><li>tropical illness e.g. Malaria</li></ul><br>Chronic headache<br><ul><li><span class="concept" data-cid="7830">chronically raised ICP</span></li><li>Paget's disease</li><li>psychological</li></ul><br>*some neurologists use the term trigeminal autonomic cephalgia to group a number of conditions including cluster headache, paroxysmal hemicrania and short-lived unilateral neuralgiform headache with conjunctival injection and tearing (SUNCT). It is recommended such patients are referred for specialist assessment as specific treatment may be required, for example it is known paroxysmal hemicrania responds very well to indomethacin</div>
---
{{HeadAche Red Flags}}
---
!!!<center>''HEADACHE''</center>
<hr>
//You are called to the emergency room to evaluate a 58-year old man who complains of a severe headache that has lasted for several hours//
* ''Immediate Questions''
* Has the patient experienced similar headaches before?
* If the headache is similar to previous tension or migraine headaches, then the situation is unlikely to be urgent; however, if the headache is new or deviates from a previous pattern, several potentially serious conditions should be considered, including acute glaucoma, sinusitis, subarachnoid hemorrhage, meningitis, neoplasm, temporal arteritis, and early hypertensive encephalopathy.
* What are the patient’s vital signs?
* Fever? (subarachnoid hemorrhage, meningitis, temporal arteritis, or acute sinusitis)
* Is the patient taking any anticoagulants?
* Does the patient have a predisposition to bleeding? Low platelets? (less than 20,000/μL)
* Aspirin or warfarin?
* Most headaches are secondary to either tension-type or migraine headaches.
* ''Tension-type headache:'' Episodic, squeezing, “bandlike” tightness that is usually felt bilaterally. It may occur in the occipital, frontal, or bitemporal regions.
* There is usually no aggravation from walking stairs or similar routine activities and no associated nausea or vomiting.
* Photophobia and phonophobia are absent
* ''Migraine headache:'' usually pounding or throbbing but may be dull and boring, usually unilateral but may also occur bilaterally, associated with Anorexia, nausea, and vomiting. The attack may last several hours to 2–3 days and occasionally longer. more common in women.
* ''Cluster headaches:'' excruciating, usually unilateral, and frequently associated with ipsilateral nasal congestion, lacrimation, and conjunctival injection. No Nausea, vomiting, photophobia, and phonophobia, mostly in men 20-40 yrs
* ''Temporal arteritis:'' >50 yrs, malaise, weight loss, fever, and myalgias. Jaw claudication is a classic symptom.
* ''Trigeminal neuralgia:'' brief, but severe and jabbing, usually unilateral and localized to one or more divisions of the trigeminal nerve. Precipitants include talking, chewing, or having physical pressure exerted on a specific trigger area.
* ''Cerebrovascular disease:'' Headache can be a presenting complaint in some patients experiencing an acute stroke.
* ''Sinusitis:'' Headache is usually dull, aching, and frontally located. Pain is frequently worse in the morning
* If the patient displays an altered mental status or complains of a stiff neck, a complicated sinus infection should be suspected (brain abscess, meningitis, septic cavernous sinus thrombosis).
* ''Eye disease:'' Glaucoma, keratitis, and uveitis
* Dental disease.
* Temporomandibular joint disease.
* ''Subarachnoid hemorrhage:'' sudden onset of severe headache (frequently described as the worst headache of his or her life) that develops during exertion. Transient loss of consciousness or buckling of the legs often accompanies the headache. Vomiting soon follows.
* ''Acute febrile illness:'' Fever may cause a vascular-type throbbing headache that remits as the illness resolves.
* Any febrile patient in whom headache is a major complaint should also be suspected of having meningitis, especially if nuchal rigidity or other signs of meningeal irritation are present.
<hr>
<center>''Management''</center>
<hr>
* Eye and ENT exam including sinuses
* Neuro exam if needed
* CBC, ESR, PT/INR, CT head if suspecting stroke or SAH
* Neuroimaging should be performed in any patient with an acute onset of a severe headache (the “worst headache of my life”), with a chronic headache pattern that has recently changed in frequency or severity, or with progressive worsening of a headache despite appropriate therapy.
* Moreover, neuroimaging should be performed in any patient > 50 years with a new onset of headache or whose neurologic exam reveals focal findings.
* In addition, a head CT scan should be obtained in any patient who has onset of headache that is exacerbated with exertion, cough, Valsalva’s maneuver, or that awakens the patient at night, or in any patient who has an orbital bruit.
* Finally, neuroimaging should be performed in any patient with new onset of headache and a history of cancer or HIV.
* [[Lumbar Puncture]] if meningitis is suspected
* The initial goal in the management of headache is to exclude rare but potentially serious causes, such as brain tumor, subarachnoid hemorrhage, brain abscess, and meningitis.
* When these conditions have been excluded, treatment can be directed according to the type of headache.
* ''Episodic tension-type headache:'' NSAIDs
* ''Chronic tension-type headache:'' NSAIDs plus sedating antihistamine, such as promethazine (Phenergan) and diphenhydramine (Benadryl), or an antiemetic, such as metoclopramide (Perinorm) and prochlorperazine (Stemetil).
* ''Other options''
* Amitriptyline (Tryptomer) 25 mg HS
* Disprin 325mg q6h or naproxen 500 mg BD or Brufen 400-800 mg q6h
* ''Prophylaxis:'' SSRIs, Tab Nexito (Escitalopam) 10 mg OD
* Massage of the neck and local application of heat. When occipital, suboccipital, or cervical muscle spasm is present.
''Migraine headache''
* ''For an early mild attack:'' NSAIDs
* Aspirin, ibuprofen 400-800 mg Q 4-6 hr, naproxen (Naprosyn) 500 mg Q 12 hr
* Metoclopramide (Perinorm) 10 mg TDS
* Inj Ketorolac 30-60 mg IM STAT
* Tab Sumatriptan 50 mg STAT, can rept after 2hrs
* Zolmitriptan 2.5 mg STAT can repeat after 2 hrs
* Rizatriptan 5-10 mg STAT can repeat after 2 hrs
* Inj Prochlorperazine (Stemetil) 25 mg IV STAT
* ''Prophylactic therapy''
* Propranolol 80–240 mg/day,
* Amitriptyline 30–150 mg/day,
* Divalproex sodium 500–1500 mg/day
* Sodium valproate 800–1500 mg/day.
''Cluster headaches''
* Oxygen 7-10/min for 10 minutes
* Sumatriptan. Found to be effective in aborting
* Prophylactic therapy. Verapamil, lithium carbonate, methysergide and cortisone
Drugs Causing Headache
* AmloDipine
* ISMN
* Nicorandil
* CarbamaZepine
* SulphaSalazine
<div id="notecontent">Some of the following is based on an excellent review article on the Great Ormond Street Hospital website.<br><br>Epidemiology<br><ul><li>up to 50 per cent of 7-year-olds and up to 80 per cent of 15-year-old have experienced at least one headache</li><li>equally as common in boys/girls until puberty then strong (3:1) female preponderance </li></ul><br><b>Migraine</b><br><br>Migraine without aura is the most common cause of primary headache in children. The International Headache Society (IHS) have produced criteria for paediatric migraine without aura:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>A</th><th> >= 5 attacks fulfilling features B to D</th></tr></thead><tbody><tr><td>B</td><td>Headache attack lasting 4-72 hours</td></tr><tr><td>C</td><td>Headache has at least two of the following four features:<br><ul><li>bilateral or unilateral (frontal/temporal) location</li><li>pulsating quality</li><li>moderate to severe intensity</li><li>aggravated by routine physical activity</li></ul></td></tr><tr><td>D</td><td>At least one of the following accompanies headache:<br><ul><li>nausea and/or vomiting</li><li>photophobia and phonophobia (may be inferred from behaviour)</li></ul></td></tr></tbody></table></div><br>Acute management<br><ul><li>ibuprofen is thought to be more effective than paracetamol for paediatric migraine</li><li>NICE CKS recommends that triptans may be used in children >= 12 years but follow-up is required</li><li>sumatriptan nasal spay (licensed) is the only triptan that has proven efficacy but it is poorly tolerated by young people who don't like the taste in the back of the throat</li><li>it should be noted that oral triptans are not currently licensed in people < 18 years</li><li>side-effects of triptans include tingling, heat and heaviness/pressure sensations</li></ul><br>Prophylaxis<br><ul><li>the evidence base is limited and no clear consensus guidelines exist</li><li>the GOSH website states: 'in practice, pizotifen and propranolol should be used as first line preventatives in children. Second line preventatives are valproate, topiramate and amitryptiline'</li></ul><br><b>Tension-type headache (TTH)</b><br><br>Tension-type headache is the second most common cause of headache in children. The IHS diagnostic criteria for TTH in children is reproduced below: <br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>A</th><th> At least 10 previous headache episodes fulfilling features B to D</th></tr></thead><tbody><tr><td>B</td><td> Headache lasting from 30 minutes to 7 days</td></tr><tr><td>C </td><td>At least two of the following pain characteristics:<br><ul><li>pressing/tightening (non/pulsating) quality</li><li>mild or moderate intensity (may inhibit but does not prohibit activity)</li><li>bilateral location</li><li>no aggravation by routine physical activity</li></ul></td></tr><tr><td>D</td><td> Both of the following:<br><ul><li>no nausea or vomiting</li><li>photophobia and phonophobia, or one, but not the other is present</li></ul></td></tr></tbody></table></div></div>
!!Headache Red Flags
Headache is one of the most common presenting complaints seen in clinical practice. The vast majority of these will be caused by common, benign conditions. There are however certain features in a history which should prompt further action. In the 2012 guidelines NICE suggest the following:
* compromised immunity, caused, for example, by HIV or immunosuppressive drugs
* age under 20 years and a history of malignancy
* a history of malignancy known to metastasis to the brain
* vomiting without other obvious cause
* worsening headache with fever
* sudden-onset headache reaching maximum intensity within 5 minutes - 'thunderclap'
* new-onset neurological deficit
* new-onset cognitive dysfunction
* change in personality
* impaired level of consciousness
* recent (typically within the past 3 months) head trauma
* headache triggered by cough, valsalva (trying to breathe out with nose and mouth blocked), sneeze or exercise
* orthostatic headache (headache that changes with posture)
* symptoms suggestive of giant cell arteritis or acute narrow-angle glaucoma
* a substantial change in the characteristics of their headache
<div id="notecontent">Patients who suffer head injuries should be managed according to ATLS principles and extracranial injuries should be managed alongside cranial trauma. An inadequate cardiac output will compromise CNS perfusion irrespective of the nature of the cranial injury. <br><br><b>Types of traumatic brain injury</b><br><br><div class="table-responsive"><table class="table table-bordered"><tbody><tr><td><b>Extradural haematoma</b></td><td>Bleeding into the space between the dura mater and the skull. Often results from acceleration-deceleration trauma or a blow to the side of the head. The majority of extradural haematomas occur in the temporal region where skull fractures cause a rupture of the middle meningeal artery.<br><br>Features<br><ul><li>Raised intracranial pressure</li><li>Some patients may exhibit a lucid interval</li></ul></td></tr><tr><td><b>Subdural haematoma</b></td><td>Bleeding into the outermost meningeal layer. Most commonly occur around the frontal and parietal lobes. May be either acute or chronic. <br><br>Risk factors include old age and alcoholism.<br><br>Slower onset of symptoms than a extradural haematoma.</td></tr><tr><td><b>Subarachnoid haemorrhage</b></td><td>Usually occurs spontaneously in the context of a ruptured cerebral aneurysm, but may be seen in association with other injuries when a patient has sustained a traumatic brain injury.</td></tr></tbody></table></div><br><b>Pathophysiology</b><br><ul><li>Primary brain injury may be focal (contusion/ haematoma) or diffuse (diffuse axonal injury)</li><li>Diffuse axonal injury occurs as a result of mechanical shearing following deceleration, causing disruption and tearing of axons</li><li>Intra-cranial haematomas can be extradural, subdural or intracerebral, while contusions may occur adjacent to (coup) or contralateral (contre-coup) to the side of impact</li><li>Secondary brain injury occurs when cerebral oedema, ischaemia, infection, tonsillar or tentorial herniation exacerbates the original injury. The normal cerebral auto regulatory processes are disrupted following trauma rendering the brain more susceptible to blood flow changes and hypoxia</li><li>The Cushings reflex (hypertension and bradycardia) often occurs late and is usually a pre terminal event</li></ul><br><b>Management</b><br><ul><li>Where there is life threatening rising ICP such as in extradural haematoma and whilst theatre is prepared or transfer arranged use of IV mannitol/ frusemide may be required.</li><li>Diffuse cerebral oedema may require decompressive craniotomy</li><li>Exploratory Burr Holes have little management in modern practice except where scanning may be unavailable and to thus facilitate creation of formal craniotomy flap</li><li>Depressed skull fractures that are open require formal surgical reduction and debridement, closed injuries may be managed nonoperatively if there is minimal displacement.</li><li>ICP monitoring is appropriate in those who have GCS 3-8 and normal CT scan.</li><li>ICP monitoring is mandatory in those who have GCS 3-8 and abnormal CT scan.</li><li>Hyponatraemia is most likely to be due to the syndrome of inappropriate ADH secretion.</li><li>Minimum of cerebral perfusion pressure of 70mmHg in adults.</li><li>Minimum cerebral perfusion pressure of between 40 and 70 mmHg in children.</li></ul><br><b>Interpretation of pupillary findings in head injuries</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Pupil size</b></th><th><b>Light response</b></th><th><b>Interpretation</b></th></tr></thead><tbody><tr><td>Unilaterally dilated</td><td>Sluggish or fixed</td><td>3rd nerve compression secondary to tentorial herniation</td></tr><tr><td>Bilaterally dilated</td><td>Sluggish or fixed</td><td><ul><li>Poor CNS perfusion </li><li>Bilateral 3rd nerve palsy</li></ul></td></tr><tr><td>Unilaterally dilated or equal</td><td>Cross reactive (Marcus - Gunn)</td><td>Optic nerve injury</td></tr><tr><td>Bilaterally constricted</td><td>May be difficult to assess</td><td><ul><li>Opiates</li><li>Pontine lesions</li><li>Metabolic encephalopathy</li></ul></td></tr><tr><td>Unilaterally constricted</td><td>Preserved</td><td>Sympathetic pathway disruption</td></tr></tbody></table></div></div>
---
!! NICE CT Guidelines
NICE has strict and clear guidance regarding which adult patients are safe to discharge and which need further CT head imaging. The latter group are also divided into two further cohorts, those who require an immediate CT head and those requiring CT head within 8 hours of injury:
CT head immediately
* GCS < 13 on initial assessment
* GCS < 15 at 2 hours post-injury
* suspected open or depressed skull fracture.
* any sign of basal skull fracture (haemotympanum, 'panda' eyes, cerebrospinal fluid leakage from the ear or nose, Battle's sign).
* post-traumatic seizure.
* focal neurological deficit.
* more than 1 episode of vomiting
CT head scan within 8 hours of the head injury - for adults with any of the following risk factors who have experienced some loss of consciousness or amnesia since the injury:
* age 65 years or older
* any history of bleeding or clotting disorders
* dangerous mechanism of injury (a pedestrian or cyclist struck by a motor vehicle, an occupant ejected from a motor vehicle or a fall from a height of greater than 1 metre or 5 stairs)
* more than 30 minutes' retrograde amnesia of events immediately before the head injury
`If a patient is on warfarin who have sustained a head injury with no other indications for a CT head scan, perform a CT head scan within 8 hours of the injury.`
---
!!!<center>''HEAD INJURY''</center>
<hr>
* 80% mild (GCS 14–15), 10% mod (GCS 9–13), 10% severe (GCS <9) injuries
* Careful hx: Associated sxs (photophobia, vomiting, visual Δ, ocular pain), FNDs
* Assess for head or neck trauma, medications, substance abuse
* Check fingerstick blood sugar to r/o hypoglycemia as cause for AMS
* Warning signs for neuroimaging: severe HA, vomiting, worsening over days, aggravated by exertion or Valsalva, neck stiffness, AMS,abnl neuro exam, peri- or retro-orbital pain
<hr>
<center>''Skull Fractures''</center>
<hr>
* Basilar skull fx: Periorbital ecchymosis (raccoon eyes), retroauricular hematoma (Battle sign), otorrhea & rhinorrhea (CSF leak), 7th nerve palsy, hemotympanum
* Noncontrast head CT. CBC, Chem, coags, type & screen
* Airway management; management guided by underlying brain injury
* Linear skull fx: If no other IC injury may be observed 4–6 h & D/C
* Depressed skull fx: Refer to NSGY, surgical elevation if depressed skull fx > thickness of skull, update tetanus, give ppx abx & consider anticonvulsants
* Basilar skull fx: Refer to NSGY
<hr>
<center>''Scalp Laceration''</center>
<hr>
* Noncontrast head CT if indicated. CBC, Chem, coags, type & screen,
* Thoroughly evaluate & explore skull for depressions & large lacerations
* Staples can be used if galea not involved
* Interrupted or vertical mattress sutures w/ 3-0 nylon or Prolene
* Galea must be repaired w/ absorbable sutures if lacerated; continued bleeding → subgaleal hematoma that often becomes infected
* If no other injuries, can d/c. Otherwise admission & observation.
* Abx not indicated for properly managed head wound unless gross contamination
|!HEAD INJURY CLASSIFICATION|<|<|<|
|!|!MILD|!MODERATE|!SEVERE|
|!GCS| 14-15 | 9-13 | <9 |
|!Hx| Transient LOC, amnestic to event | LOC, amnestic to event | Pt unable to provide Hx |
|!SxS| Mild HA, nausea | Confused or somnolent, often unable to follow commands | Obtunded, cannot follow simple commands |
|!Head CT| Only if indicated (head CT rules); usually neg | All pts | All pts |
|!Eval| Evaluate C-spine, no other testing needed | CBC, glucose, Chem, tox, coags, UA, hCG | CBC, glucose, Chem, tox, coags, UA, hCG |
|!Tx| Observation w/ neuro checks, d/c w/ careful return instructions | 24-h admission even if head CT neg, repeat CT if ↓GCS, AMS | Intubation, NSGY eval, IVF, tight BP control(SBP>90), treat ↑ICP(mannitol, hypertonic NS, sz tx) |
<center>''Canadian Head CT Imaging Rules''</center>
<hr>
* Must Have Initial GCS 13–15
* GCS <15 at 2 h postinjury
* Suspected open or depressed skull fx
* Age >64
* Retrograde amnesia to event at >30 min
* Any sign of basilar skull fx
* 2 or more episodes of vomiting
* Dangerous mechanism
<hr>
<center>''Postconcussive Syndrome''</center>
<hr>
* Closed head injury, ± LOC (brief); HA, memory problems, dizziness, etc. may last 6 wk; CT-no bleed, Rx: Symptomatic HA control
<hr>
<center>''Intracerebral/Intraparenchymal Hemorrhage''</center>
<hr>
* Airway management
* Emergent neurosurgical eval although most pts are managed nonoperatively
* Mannitol for ↑ ICP, anticonvulsants to all pts
<hr>
<center>''Subarachnoid Hemorrhage (SAH)''</center>
<hr>
* HA, N/V, sz, syncope, acute distress
* Acute AMS is indicative of large bleed, usually requires emergent intervention
* Noncontrast CT scan of head, (CBC, BMP, coags,
* T&S) Head CT 95–99% sens for acute SAH (w/i 6–24 h); perform LP if CT neg
* Airway management if comatose or not protecting airway, neurosurgical consultation
* ICP & BP monitoring if bleed is significant; a-line, elevate head of bed to 30°
* SPB b/w 90-140 mmHg, HR b/w 50-90 bpm, nicardipine or labetalol prn
* Mannitol for significant bleed w/ increased ICP
* Nimodipine to decrease vasospasm 60 mg PO q4h × 21 d
* Sz prophylaxis (phenytoin, Levera)
<hr>
<center>''Subdural Hematoma (SDH)''</center>
<hr>
* Noncontrast head CT shows crescent-shaped mass. Check CBC, Chem, Coags, type & screen
* Airway management, emergent neurosurgical eval
* If e/o ↑ ICP or midline shift, mannitol & anticonvulsant
<hr>
<center>''Epidural Hematoma''</center>
<hr>
* Noncontrast CT often shows lenticular biconcave mass, possible fx of temporal bone
* CBC, Chem, coag panel, type & screen
* Airway management, emergent neurosurgical consultation Mannitol & anticonvulsant
<hr>
<center>''Indications for Sz Prophylaxis''</center>
<hr>
* Depressed skull fractures
* Paralyzed & intubated, severe head injury
* Sz at the time of injury or during ED presentation
* Penetrating brain injury
* GCS ≤8
* Acute SDH, EDH, or ICH
* Hx of szs prior to injury
<hr>
<center>''Diffuse Axonal Injury (DAI)''</center>
<hr>
* Pts often present in coma; document best neuro response: May have prognostic value
* Noncontrast CT often nl, must r/o bleed, CBC, Chem, coag panel, type & screen, tox; look for other etiology for coma
* MRI (nonemergent) will show Δ & can guide prognosis
* Airway management
* Emergent neurosurgical consultation for ICP monitor to avoid 2° injury from edema
* Mannitol & anticonvulsants
GCS
Mechanism of injury
LOC post traumatic Amnesia Seizure Nausea Vomiting Drowsy/Tired Visual disturbance Evidence of alcohol Drug abuse Neuro symptoms
Orientation to TPPS
exam
CSF leak
Hearing loss/facial weakness
Abnomal fine limb movement
Abnormal gait
Base skull fracture evidence
Dysphagia
Injury to neck
Inappropriate/Abnormal behaviour
Loss of vision
Suspicion of compound skull fracture/penetrating injury
!!Hearing testing in children
<div id="notecontent">The table below summarises the hearing tests which may be performed on children<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Age</b></th><th><b>Test</b></th><th><b>Comments</b></th></tr></thead><tbody><tr><td>Newborn</td><td>Otoacoustic emission test</td><td>All newborns should be tested as part of the <b>Newborn Hearing Screening Programme</b>. A computer generated click is played through a small earpiece. The presence of a soft echo indicates a healthy cochlea</td></tr><tr><td>Newborn & infants</td><td>Auditory Brainstem Response test</td><td>May be done if otoacoustic emission test is abnormal</td></tr><tr><td>6-9 months</td><td>Distraction test</td><td>Performed by health visitor, requires two trained staff</td></tr><tr><td>18 months - 2.5 years</td><td>Recognition of familiar objects</td><td>Uses familiar objects e.g. teddy, cup. Ask child simple questions - e.g. 'where is the teddy?'</td></tr><tr><td>> 2.5 years</td><td>Performance testing</td><td>-</td></tr><tr><td>> 2.5 years</td><td>Speech discrimination tests</td><td>Uses similar sounding objects e.g. Kendall Toy test, McCormick Toy Test</td></tr><tr><td> > 3 years</td><td>Pure tone audiometry</td><td>Done at school entry in most areas of the UK</td></tr></tbody></table></div><br>As well as the above test there is a questionnaire for parents in the Personal Child Health Records - 'Can your baby hear you?'</div>
<div id="notecontent">Heavy menstrual bleeding (also known as menorrhagia) was previously defined as total blood loss > 80 ml per menses, but it is obviously difficult to quantify. The management has therefore shifted towards what the woman considers to be excessive. Prior to the 1990's many women underwent a hysterectomy to treat heavy periods but since that time the approach has altered radically. The management of menorrhagia now depends on whether a woman needs contraception. <br><br>Investigations<br><ul><li>a <span class="concept" data-cid="2566">full blood count</span> should be performed in all women</li><li>NICE recommend arranging a routine transvaginal <span class="concept" data-cid="338">ultrasound scan</span> if symptoms (for example, intermenstrual or postcoital bleeding, pelvic pain and/or pressure symptoms) suggest a structural or histological abnormality. Other indications include abnormal pelvic exam findings.</li></ul><br>Does not require contraception<br><ul><li>either <span class="concept" data-cid="8413">mefenamic acid</span> 500 mg tds (particularly if there is dysmenorrhoea as well) or <span id="concept_popover_id_2488" class="concept concept-0 trigger-link" data-cid="2488" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2488'>You've never been tested on this concept</div><br><div id='div_concept_rating2488' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(122,255,0)'>Importance: <b>76</b></span> </div>" data-original-title="Tranexamic acid is the first-line non-hormonal treatment for menorrhagia">tranexamic acid</span> 1 g tds. Both are started on the first day of the period</li><li>if no improvement then try other drug whilst awaiting referral</li></ul><br>Requires contraception, options include<br><ul><li><span class="concept" data-cid="339">intrauterine system (Mirena) should be considered first-line</span></li><li><span class="concept" data-cid="8412">combined oral contraceptive pill</span></li><li>long-acting progestogens</li></ul><br><span class="concept" data-cid="8414">Norethisterone</span> 5 mg tds can be used as a short-term option to rapidly stop heavy menstrual bleeding.<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd914b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd914.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd914b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Flowchart showing the management of menorrhagia</div></div>
<div id="body_content">
<i>Helicobacter pylori</i> is a Gram negative bacteria associated with a variety of gastrointestinal problems, principally peptic ulcer disease<br><br>Associations<br><ul><li>peptic ulcer disease (95% of duodenal ulcers, 75% of gastric ulcers)</li><li>gastric cancer</li><li>B cell lymphoma of MALT tissue (eradication of H pylori results causes regression in 80% of patients)</li><li>atrophic gastritis</li></ul><br>The role of H pylori in Gastro-oesophageal reflux disease (GORD) is unclear - there is currently no role in GORD for the eradication of H pylori<br><br>Management - eradication may be achieved with a 7 day course of <br><ul><li>a proton pump inhibitor + amoxicillin + clarithromycin, or </li><li>a proton pump inhibitor + metronidazole + clarithromycin</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd513b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd513.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd513b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext"><i>H. pylori</i> colonized on the surface of regenerative epithelium (silver stain)</div></div>
!!!<center>''HEMATOCHEZIA''</center>
<hr>
//A 38-year-old man comes to the emergency room and states, “I have just passed a lot of blood from my bowels.”//
* Immediate Questions
* What are the patient’s vital signs?
* Does the patient have IV line access?
* Is there a history of previous gastrointestinal (GI) bleeding?
* H/O diverticular disease, colon polyps or carcinoma, inflammatory bowel disease, hemorrhoids, and other anal diseases.
* Inquire about prior upper GI bleeding and also peptic ulcer disease (PUD).
* Meds: steroids, (NSAIDs), and anticoagulants.
* Alcoholic?
* Recent Hb,Hct
* What is the volume of bright red blood per rectum?
* Ask the nurse to save the specimen or specimens for your inspection.
* Has there been hematemesis?
* Anorectal (hemorrhoids/fissures/rectal ulcers) 4%
* Diverticular disease 30–50%
* Angiodysplasia. 10%
* Upper GI bleeding. 10%
* Neoplasia including carcinoma and polyps.
* Inflammatory bowel disease (IBD).
* Bowel ischemia.
* Check for hemorrhoids for a mass and to document blood in the rectal vault (melena, bright red blood, or guaiac-positive stools).
* Nasogastric (NG) tube placement.
* CBC, type and cross-match, BUN, Creatinine, PT/INR,
* At least 4 units of (PRBCs).
* Anoscopy and flexible sigmoidoscopy. Look for bleeding hemorrhoids or rectal mass.
* Colonoscopy. Preferred exam for diagnosis and treatment of suspected lower GI bleed.
* Upper GI endoscopy. An upper GI source must be ruled out before surgery.
* Admit and start protocol
<div id="notecontent">The management of patients with haematuria is often difficult due to the absence of widely followed guidelines. It is sometimes unclear whether patients are best managed in primary care, by urologists or by nephrologists.<br><br>The terminology surrounding haematuria is changing. Microscopic or dipstick positive haematuria is increasingly termed non-visible haematuria whilst macroscopic haematuria is termed visible haematuria. Non-visible haematuria is found in around 2.5% of the population.<br><br>Causes of transient or spurious non-visible haematuria<br><ul><li>urinary tract infection</li><li>menstruation</li><li>vigorous exercise (this normally settles after around 3 days)</li><li>sexual intercourse</li></ul><br>Causes of persistent non-visible haematuria<br><ul><li>cancer (bladder, renal, prostate)</li><li>stones</li><li>benign prostatic hyperplasia</li><li>prostatitis</li><li>urethritis e.g. <i>Chlamydia</i></li><li>renal causes: IgA nephropathy, thin basement membrane disease</li></ul><br>Spurious causes - red/orange urine, where blood is not present on dipstick<br><ul><li>foods: beetroot, rhubarb</li><li>drugs: rifampicin, doxorubicin</li></ul><br><b>Management</b><br><br>Current evidence does not support screening for haematuria. The incidence of non-visible haematuria is similar in patients taking aspirin/warfarin to the general population hence these patients should also be investigated.<br><br>Testing<br><ul><li>urine dipstick is the test of choice for detecting haematuria</li><li>persistent non-visible haematuria is often defined as blood being present in 2 out of 3 samples tested 2-3 weeks apart</li><li>renal function, albumin:creatinine (ACR) or protein:creatinine ratio (PCR) and blood pressure should also be checked</li><li>urine microscopy may be used but time to analysis significantly affects the number of red blood cells detected</li></ul><br>NICE urgent cancer referral guidelines were updated in 2015.<br><br><b>Urgent referral (i.e. within 2 weeks)</b><br><br>Aged >= 45 years AND:<br><ul><li>unexplained visible haematuria without urinary tract infection, or</li><li>visible haematuria that persists or recurs after successful treatment of urinary tract infection</li></ul><br>Aged >= 60 years AND have unexplained nonvisible haematuria and either dysuria or a raised white cell count on a blood test<br><br><b>Non-urgent referral</b><br><br>Aged 60 >= 60 years with recurrent or persistent unexplained urinary tract infection<br><br>Since the investigation (or not) of non-visible haematuria is such as a common dilemma a number of guidelines have been published. They generally agree with NICE guidance, of note:<br><ul><li>patients under the age of 40 years with normal renal function, no proteinuria and who are normotensive do not need to be referred and may be managed in primary care</li></ul></div>
---
!!!<center>''HEMATURIA''</center>
<hr>
//A 51-year-old man has red blood cells noted on urinalysis 3 days after undergoing a total hip replacement.//
* Immediate Questions
* Is there a history of gross hematuria?
* Does the patient have a Foley catheter in place?
* Has the patient had recent abdominal surgery? This raises the question of injury to the urinary tract and is usually apparent the night of surgery.
* Does the patient have abdominal pain or fever?
* Abdominal pain may suggest an inflammatory or infectious cause.
* Colicky pain radiating from the flank to the groin suggests a renal stone.
* Infection is often accompanied by fever.
* Has there been a significant change in urine output? A sudden decrease in urine output may indicate acute oliguric renal failure, obstruction, or renal vein thrombosis.
* Does the patient have symptoms suggestive of urinary tract infection (UTI)? Dysuria, frequency, and urgency
* Is the patient taking anticoagulant medication?
* Is there a history of urologic conditions? A history of nephrolithiasis, genitourinary surgery, bladder cancer, or benign prostatic hypertrophy should be determined.
* Check Urinalysis with culture, PT/INR, CBC, KFT, USG abd, Abdominal plain KUB x-ray for stones
* Also, the KUB may show an inflammatory process (ileus or loss of psoas shadow).
* IVP
* Treat UTI
* Urolithiasis. If the stone is expected to pass spontaneously (usually < 1 cm) and there are no complicating factors (infection, obstruction), expectant therapy with analgesics and hydration is appropriate. The urine should be strained.
* Correct Coagulopathy.
!!Haemochromatosis
Haemochromatosis is an autosomal recessive disorder of iron absorption and metabolism resulting in iron accumulation. It is caused by inheritance of mutations in the HFE gene on both copies of chromosome 6*. It is often asymptomatic in early disease and initial symptoms often non-specific e.g. lethargy and arthralgia
Epidemiology
* 1 in 10 people of European descent carry a mutation in the genes affecting iron metabolism, mainly HFE
* prevalence in people of European descent = 1 in 200, making it more common than cystic fibrosis
Presenting features
* early symptoms include fatigue, erectile dysfunction and arthralgia (often of the hands)
* 'bronze' skin pigmentation
* diabetes mellitus
* liver: stigmata of chronic liver disease, hepatomegaly, cirrhosis, hepatocellular deposition)
* cardiac failure (2nd to dilated cardiomyopathy)
* hypogonadism (2nd to cirrhosis and pituitary dysfunction - hypogonadotrophic hypogonadism)
* arthritis (especially of the hands)
Questions have previously been asked regarding which features are reversible with treatment:
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1">
<thead>
<tr>
<th><b><span class="concept" data-cid="8431">Reversible complications</span></b></th>
<th><b>Irreversible complications</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
<li>Cardiomyopathy</li>
<li>Skin pigmentation</li>
</ul>
</td>
<td>
<ul>
<li>Liver cirrhosis**</li>
<li>Diabetes mellitus</li>
<li>Hypogonadotrophic hypogonadism</li>
<li>Arthropathy</li>
</ul>
</td>
</tr>
</tbody>
</table>
*there are rare cases of families with classic features of genetic haemochromatosis but no mutation in the HFE gene
**whilst elevated liver function tests and hepatomegaly may be reversible, cirrhosis is not
;Treatment
* Regular Venesection
<div id="notecontent">The table below lists the main characteristics of the most important causes of haemoptysis:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Diagnosis</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><b>Lung cancer</b></td><td>History of smoking<br>Symptoms of malignancy: weight loss, anorexia</td></tr><tr><td><b>Pulmonary oedema</b></td><td>Dyspnoea<br>Bibasal crackles and S3 are the most reliable signs</td></tr><tr><td><b>Tuberculosis</b></td><td>Fever, night sweats, anorexia, weight loss</td></tr><tr><td><b>Pulmonary embolism</b></td><td>Pleuritic chest pain<br>Tachycardia, tachypnoea</td></tr><tr><td><b>Lower respiratory tract infection</b></td><td>Usually acute history of purulent cough</td></tr><tr><td><b>Bronchiectasis</b></td><td>Usually long history of cough and daily purulent sputum production</td></tr><tr><td><b>Mitral stenosis</b></td><td>Dyspnoea<br>Atrial fibrillation<br>Malar flush on cheeks<br>Mid-diastolic murmur</td></tr><tr><td><b>Aspergilloma</b></td><td>Often past history of tuberculosis.<br>Haemoptysis may be severe<br>Chest x-ray shows rounded opacity</td></tr><tr><td><b>Granulomatosis with polyangiitis</b></td><td>Upper respiratory tract: epistaxis, sinusitis, nasal crusting<br>Lower respiratory tract: dyspnoea, haemoptysis<br>Glomerulonephritis<br>Saddle-shape nose deformity</td></tr><tr><td><b>Goodpasture's syndrome</b></td><td>Haemoptysis<br>Systemically unwell: fever, nausea<br>Glomerulonephritis</td></tr></tbody></table></div></div>
---
!!!<center>''HEMOPTYSIS''</center>
<hr>
//A 60-year-old male smoker comes to the emergency room complaining of “spitting up blood” for 1 week.//
* Immediate Questions
* Is the patient truly experiencing hemoptysis?
* What is the volume of the hemoptysis?
* Massive hemoptysis (> 600 mL/24 hr): admit to ICU
* Has this happened before? If so, how frequently?
* Smoking (bronchogenic carcinoma?), TB?
* Is there a history of productive cough preceding the hemoptysis? If the answer is yes, then the problem may be an infection such as acute bronchitis or bronchiectasis.
* Has there been any accompanying chest pain? Pneumonia or a PE with infarction.
* Differential Diagnosis
* Acute or chronic bronchitis. Most common cause of hemoptysis.
* If CXR wnl, age<40, nonsmoker, hemoptysis <1 wk, treat as acute bronchitis (blood streaking superimposed upon purulent sputum)
* Tab Augmentin 625 mg TDS
* Pneumonia, Lung abscess, Bronchiectasis, Tuberculosis, Bronchogenic carcinoma, Pulmonary embolism (PE) with infarction, Mitral stenosis.
* Get CBC, PT/INR, BUN,Creatinine, ABG, Sputum AFB, CBNAAT, CXR, Chest CT if needed, ECG
* Patients with unclear sources of hemoptysis, massive hemoptysis, or the suspicion of a neoplasm require fiberoptic bronchoscopy.
* Start IVF
* Always protect the airway. This may require early intubation.
* Correct any coagulopathy.
* Fiberoptic bronchoscopy. Arrange early if the diagnosis is in doubt or hemoptysis continues.
* Thoracic surgery consultation
* Admit, start pneumonia protocol
<center>
| !HEMORRHOIDS DRUGS |<|
|Calcium Dobesilate|Tab Caldob 500 BD for 1 wk|
|Diosmin|Tab Daflon 500 BD for 5 days|
|Feracrylum|Hemolok Gel BD 1 wk|
|Phenylephrine+<br>Beclo+<br>Lidocaine|Oint Proctosedyl BD cream BD<br>Anovate cream BD|
|Hydrocortisone+<br>Lidocaine+<br>Zinc+<br>Allantoin|Oint Anaproct BD, 2 wks<br>Oint Smuth BD, 2 wks<br>Oint Sheild BD<br>Tab Pilex BD, 2wks|
</center>
<div id="body_content">
There are two main types of heparin - unfractionated, 'standard' heparin or low molecular weight heparin (LMWH). Heparins generally act by activating antithrombin III. Unfractionated heparin forms a complex which inhibits thrombin, factors Xa, IXa, XIa and XIIa. LMWH however only increases the action of antithrombin III on factor Xa<br><br>Adverse effects of heparins include:<br><ul><li>bleeding</li><li><span class="concept" data-cid="7506">thrombocytopenia</span> - see below</li><li><span class="concept" data-cid="7508">osteoporosis</span> and an <span class="concept" data-cid="7510">increased risk of fractures</span></li><li><span class="concept" data-cid="7507">hyperkalaemia</span> - this is thought to be caused by inhibition of aldosterone secretion</li></ul><br>The table below shows the differences between standard heparin and LMWH:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Standard heparin</b></th><th><b>Low molecular weight heparin (LMWH)</b></th></tr></thead><tbody><tr><td><b>Administration</b></td><td>Intravenous</td><td>Subcutaneous</td></tr><tr><td><b>Duration of action</b></td><td>Short</td><td>Long</td></tr><tr><td><b>Mechanism of action</b></td><td><span class="concept" data-cid="7509">Activates antithrombin III. Forms a complex that inhibits thrombin, factors Xa, IXa, Xia and XIIa</span></td><td><span class="concept" data-cid="7511">Activates antithrombin III. Forms a complex that inhibits factor Xa</span></td></tr><tr><td><b>Side-effects</b></td><td>Bleeding<br>Heparin-induced thrombocytopaenia (HIT)<br>Osteoporosis</td><td>Bleeding<br><br>Lower risk of HIT and osteoporosis with LMWH</td></tr><tr><td><b>Monitoring</b></td><td>Activated partial thromboplastin time (APTT)</td><td>Anti-Factor Xa (although routine monitoring is not required)</td></tr><tr><td><b>Notes</b></td><td>Useful in situations where there is a high risk of bleeding as anticoagulation can be terminated rapidly. Also useful in <span class="concept" data-cid="9275">renal failure</span></td><td>Now standard in the management of venous thromboembolism treatment and prophylaxis and acute coronary syndromes</td></tr></tbody></table></div><br>Heparin-induced thrombocytopaenia (HIT)<br><ul><li>immune mediated - <span class="concept" data-cid="189">antibodies form against complexes of platelet factor 4 (PF4) and heparin</span></li><li>these antibodies bind to the PF4-heparin complexes on the platelet surface and induce platelet activation by cross-linking FcγIIA receptors</li><li>usually does not develop until after 5-10 days of treatment</li><li>despite being associated with low platelets HIT is actually a <span class="concept" data-cid="5696">prothrombotic condition</span></li><li>features include a greater than 50% reduction in platelets, thrombosis and skin allergy</li><li>treatment options include alternative anticoagulants such as lepirudin and danaparoid</li></ul><br>Heparin overdose may be reversed by <span class="concept" data-cid="7512">protamine sulphate</span>, although this only partially reverses the effect of LMWH.</div>
---
>Low molecular - Low action - antithrombin III on factor Xa
---
>HEPARIN LEAKS
*Sidefx of Heparin: - Leaking Blood vessels (Bleeding, ThromboCytopenia)- Leaking Cells (HyperKalemia) - Leaking Bones (OsteoPorosis)
| !HEPATITIS DRUGS |<|
|''Advice: ''<br>• Complete bed rest <br>• Fat free diet. No oil, ghee, fried foods.<br>• Plenty of sweets, No alcohol <br>• Plenty of sweets, sugar, sugarcane juice.<br>• Glucon-D 50 gm orally daily <br>• Boiled water for all at home.<br>• Take rice, roti, jowar, dals.<br>• For breakfast: toast-jam, no butter, tea with skimmed milk.<br>• For meals take rice, pulka, daal, tomato/veg soup, all kind of vegetables with no oil or masala.<br>• All kind of fruits juices, biscuits, dry fruits, dates.<br>• No egg, meat, non veg.|<|
|Liver meds|• Tab Liv 52/Livomyn 2 tab TDS, 2 wks<br>• Syr Liv 52/Livomyn 10-15 ml TDS<br>• Inj Neo-Heaptex 2 cc IM alternate days for 5 days<br>• Inj Neurobion 2 cc IM on alternate days for 5 days<br>• Syr Livomyn 2 tsp TDS, 2 wks<br>• Syr Melcoline/Sorbilin 10 ml diluted in water before lunch and dinner<br>• Cap Essentiale/Phospholipase 175 2 cap TDS, 1 wk<br>• Tab Silybon 1 tab TDS, 2 wks<br>• Tab Hepamerz 150 mg TDS, 2 wks<br>• Syr Bayer's tonic 1 tsp BD, 2 wks<br>• Syr Hepatoglobin 1 tsp BD, 2 wks|
|Prednisolone|Tab Wysolone 10 mg BD, 5 days|
<div id="notecontent"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Condition</th><th>Features</th></tr></thead><tbody><tr><td><b>Viral hepatitis</b></td><td>Common symptoms include:<br><ul><li>nausea and vomiting, anorexia</li><li>myalgia</li><li>lethargy</li><li>right upper quadrant (RUQ) pain</li></ul><br>Questions may point to risk factors such as foreign travel or intravenous drug use.</td></tr><tr><td><b>Congestive hepatomegaly</b></td><td>The liver only usually causes pain if stretched. One common way this can occur is as a consequence of congestive heart failure. In severe cases cirrhosis may occur.</td></tr><tr><td><b>Biliary colic</b></td><td>RUQ pain, intermittent, usually begins abruptly and subsides gradually. Attacks often occur after eating. Nausea is common.<br><br>It is sometimes taught that patients are female, forties, fat and fair although this is obviously a generalisation.</td></tr><tr><td><b>Acute cholecystitis </b></td><td>Pain similar to biliary colic but more severe and persistent. The pain may radiate to the back or right shoulder. <br><br>The patient may be pyrexial and Murphy's sign positive (arrest of inspiration on palpation of the RUQ)</td></tr><tr><td><b>Ascending cholangitis</b></td><td>An infection of the bile ducts commonly secondary to gallstones. Classically presents with a triad of:<br><ul><li>fever (rigors are common)</li><li>RUQ pain</li><li>jaundice</li></ul></td></tr><tr><td><b>Gallstone ileus</b></td><td>This describes small bowel obstruction secondary to an impacted gallstone. It may develop if a fistula forms between a gangrenous gallbladder and the duodenum.<br><br>Abdominal pain, distension and vomiting are seen.</td></tr><tr><td><b>Cholangiocarcinoma</b></td><td>Persistent biliary colic symptoms, associated with anorexia, jaundice and weight loss. A palpable mass in the right upper quadrant (Courvoisier sign), periumbilical lymphadenopathy (Sister Mary Joseph nodes) and left supraclavicular adenopathy (Virchow node) may be seen</td></tr><tr><td><b>Acute pancreatitis</b></td><td>Usually due to alcohol or gallstones<br>Severe epigastric pain<br>Vomiting is common<br>Examination may reveal tenderness, ileus and low-grade fever<br>Periumbilical discolouration (Cullen's sign) and flank discolouration (Grey-Turner's sign) is described but rare</td></tr><tr><td><b>Pancreatic cancer</b></td><td>Painless jaundice is the classical presentation of pancreatic cancer. However pain is actually a relatively common presenting symptom of pancreatic cancer. Anorexia and weight loss are common</td></tr><tr><td><b>Amoebic liver abscess</b></td><td>Typical symptoms are malaise, anorexia and weight loss. The associated RUQ pain tends to be mild and jaundice is uncommon.</td></tr></tbody></table></div></div>
<div id="body_content">
The management of hepatorenal syndrome (HRS) is notoriously difficult. The ideal treatment is liver transplantation but patients are often too unwell to have surgery and there is a shortage of donors<br><br>The most accepted theory regarding the pathophysiology of HRS is that vasoactive mediators cause <b>splanchnic vasodilation</b> which in turn reduces the systemic vascular resistance. This results in 'underfilling' of the kidneys. This is sensed by the juxtaglomerular apparatus which then activates the renin-angiotensin-aldosterone system, causing renal vasoconstriction which is not enough to counterbalance the effects of the splanchnic vasodilation.<br><br>Hepatorenal syndrome has been categorized into two types:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Type 1 HRS</b></th><th><b>Type 2 HRS</b></th></tr></thead><tbody><tr><td> Rapidly progressive<br> Doubling of serum creatinine to > 221 µmol/L or a halving of the creatinine clearance to less than 20 ml/min over a period of less than 2 weeks<br> Very poor prognosis<br></td><td>Slowly progressive<br> Prognosis poor, but patients may live for longer</td></tr></tbody></table></div><br>Management options<br><ul><li>vasopressin analogues, for example terlipressin, have a growing evidence base supporting their use. They work by causing vasoconstriction of the splanchnic circulation</li><li>volume expansion with 20% albumin</li><li>transjugular intrahepatic portosystemic shunt</li></ul></div>
<div id="body_content">
Hepatitis B is a <span class="concept" data-cid="8796">double-stranded DNA hepadnavirus</span> and is spread through exposure to <span class="concept" data-cid="8797">infected blood or body fluids, including vertical transmission from mother to child</span>. The incubation period is 6-20 weeks.<br><br>The features of hepatitis B include fever, jaundice and elevated liver transaminases. <br><br>Complications of hepatitis B infection<br><ul><li><span class="concept" data-cid="8795">chronic hepatitis</span> (5-10%). <span class="concept" data-cid="9645">'Ground-glass' hepatocytes</span> may be seen on light microscopy</li><li>fulminant liver failure (1%)</li><li><span class="concept" data-cid="764">hepatocellular carcinoma</span></li><li>glomerulonephritis</li><li><span class="concept" data-cid="8798">polyarteritis nodosa</span></li><li><span class="concept" data-cid="8799">cryoglobulinaemia</span></li></ul><br>Immunisation against hepatitis B (please see the Greenbook link for more details)<br><ul><li>children born in the UK are now vaccinated as part of the routine immunisation schedule. This is given at 2, 3 and 4 months of age</li><li>at risk groups who should be vaccinated include: healthcare workers, intravenous drug users, sex workers, close family contacts of an individual with hepatitis B, individuals receiving blood transfusions regularly, chronic kidney disease patients who may soon require renal replacement therapy, prisoners, chronic liver disease patients</li><li>contains HBsAg adsorbed onto aluminium hydroxide adjuvant and is prepared from yeast cells using recombinant DNA technology</li><li>around 10-15% of adults fail to respond or respond poorly to 3 doses of the vaccine. Risk factors include age over 40 years, obesity, smoking, alcohol excess and immunosuppression</li><li>testing for anti-HBs is only recommended for those at risk of occupational exposure (i.e. Healthcare workers) and patients with chronic kidney disease. In these patients anti-HBs levels should be checked 1-4 months after primary immunisation</li><li>the table below shows how to interpret anti-HBs levels:</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Anti-HBs level (mIU/ml)</b></th><th><b>Response</b></th></tr></thead><tbody><tr><td>> 100</td><td>Indicates adequate response, no further testing required. Should still receive booster at 5 years</td></tr><tr><td>10 - 100</td><td>Suboptimal response - one additional vaccine dose should be given. If immunocompetent no further testing is required</td></tr><tr><td>< 10</td><td>Non-responder. Test for current or past infection. Give further vaccine course (i.e. 3 doses again) with testing following. If still fails to respond then HBIG would be required for protection if exposed to the virus</td></tr></tbody></table></div><br><br><br>Management of hepatitis B<br><ul><li>pegylated interferon-alpha used to be the only treatment available. It reduces viral replication in up to 30% of chronic carriers. A better response is predicted by being female, < 50 years old, low HBV DNA levels, non-Asian, HIV negative, high degree of inflammation on liver biopsy</li><li>whilst NICE still advocate the use of pegylated interferon firstl-line other antiviral medications are increasingly used with an aim to suppress viral replication (not in a dissimilar way to treating HIV patients)</li><li>examples include tenofovir, entecavir and <span class="concept" data-cid="9792">telbivudine (a synthetic thymidine nucleoside analogue)</span></li></ul></div>
{{HepB Serology}}
!!Interpreting hepatitis B serology
<div id="notecontent">is a dying art form which still occurs at regular intervals in medical exams. It is important to remember a few key facts:<br><ul><li>surface antigen (HBsAg) is the first marker to appear and causes the production of anti-HBs</li><li><span class="concept" data-cid="9391">HBsAg normally implies acute disease (present for 1-6 months)</span></li><li>if HBsAg is present for > 6 months then this implies <span class="concept" data-cid="8311">chronic disease</span> (i.e. Infective)</li><li>Anti-HBs implies immunity (either exposure or immunisation). It is negative in chronic disease</li><li>Anti-HBc implies previous (or current) infection. IgM anti-HBc appears during acute or recent hepatitis B infection and is present for about 6 months. IgG anti-HBc persists</li><li>HbeAg results from breakdown of core antigen from infected liver cells as is, therefore, a marker of infectivity</li></ul><br>Example results<br><ul><li><span id="concept_popover_id_9389" class="concept concept-3-u trigger-link" data-cid="9389" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9389'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating9389' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(214,255,0)'>Importance: <b>58</b></span> </div>" data-original-title="HBsAg negative, anti-HBs positive, IgG anti-HBc negative - previous immunisation">previous immunisation: anti-HBs positive, all others negative</span></li><li><span class="concept" data-cid="9390">previous hepatitis B (> 6 months ago), not a carrier: anti-HBc positive, HBsAg negative</span></li><li>previous hepatitis B, now a carrier: anti-HBc positive, HBsAg positive</li></ul><br><div class="alert alert-warning">HBsAg = ongoing infection, either <span class="concept" data-cid="9391">acute</span> or <span class="concept" data-cid="8311">chronic</span> if present > 6 months<br><br>anti-HB<b>c</b> = <b>c</b>aught, i.e. negative if immunized<br></div></div>
Hepatitis C is likely to become a significant public health problem in the UK in the next decade. It is thought around 200,000 people are chronically infected with the virus. At risk groups include intravenous drug users and patients who received a blood transfusion prior to 1991 (e.g. haemophiliacs).
Pathophysiology
* hepatitis C is a RNA flavivirus
* incubation period: 6-9 weeks
Transmission
* the risk of transmission during a needle stick injury is about 2%
* the vertical transmission rate from mother to child is about 6%. The risk is higher if there is coexistent HIV
* breastfeeding is not contraindicated in mothers with hepatitis C
* the risk of transmitting the virus during sexual intercourse is probably less than 5%
* there is no vaccine for hepatitis C
After exposure to the hepatitis C virus only around 30% of patients will develop features such as:
* a transient rise in serum aminotransferases / jaundice
* fatigue
* arthralgia
Investigations
* HCV RNA is the investigation of choice to diagnose acute infection
* whilst patients will eventually develop anti-HCV antibodies it should be remembered that patients who spontaneously clear the virus will continue to have anti-HCV antibodies
Outcome
* around 15-45% of patients will clear the virus after an acute infection (depending on their age and underlying health) and hence the majority (55-85%) will develop chronic hepatitis C
;Chronic hepatitis C
Chronic hepatitis C may be defined as the persistence of HCV RNA in the blood for 6 months.
Potential complications of chronic hepatitis C
* rheumatological problems: arthralgia, arthritis
* eye problems: Sjogren's syndrome
* cirrhosis (5-20% of those with chronic disease)
* hepatocellular cancer
* cryoglobulinaemia: typically type II (mixed monoclonal and polyclonal)
* porphyria cutanea tarda (PCT): it is increasingly recognised that PCT may develop in patients with hepatitis C, especially if there are other factors such as alcohol abuse
* membranoproliferative glomerulonephritis
Management of chronic infection
* treatment depends on the viral genotype - this should be tested prior to treatment
* the management of hepatitis C has advanced rapidly in recent years resulting in clearance rates of around 95%. Interferon based treatments are no longer recommended
* the aim of treatment is sustained virological response (SVR), defined as undetectable serum HCV RNA six months after the end of therapy
* currently a combination of protease inhibitors (e.g. daclatasvir + sofosbuvir or sofosbuvir + simeprevir) with or without ribavirin are used
Complications of treatment
* ribavirin - side-effects: haemolytic anaemia, cough. Women should not become pregnant within 6 months of stopping ribavirin as it is teratogenic
* interferon alpha - side-effects: flu-like symptoms, depression, fatigue, leukopenia, thrombocytopenia
!!Hepatitis D
is a single stranded RNA virus that is transmitted parenterally. It is an incomplete RNA virus that requires hepatitis B surface antigen to complete its replication and transmission cycle.
It is transmitted in a similar fashion to hepatitis B (exchange of bodily fluids) and patients may be infected with hepatitis B and hepatitis D at the same time.
Hepatitis D terminology:
* Co-infection: Hepatitis B and Hepatitis D infection at the same time.
* Superinfection: A hepatitis B surface antigen positive patient subsequently develops a hepatitis D infection.
Superinfection is associated with high risk of fulminant hepatitis, chronic hepatitis status and cirrhosis.
Diagnosis is made via reverse polymerase chain reaction of hepatitis D RNA. Interferon is currently used as treatment, but with a poor evidence base.
<div id="notecontent">Shingles is an acute, unilateral, painful blistering rash caused by reactivation of the Varicella Zoster Virus (VZV).<br><br><b>The 'shingles vaccine'</b><br><br>In 2013 the NHS introduced a vaccine to boost the immunity of elderly people against herpes zoster. Some important points about the vaccine:<br><ul><li>offered to all patients aged 70-79 years*</li><li>is <b>live-attenuated</b> and given <b>sub-cutaneously</b></li></ul><br>As it is a live-attenuated vaccine the main contraindications are immunosuppression.<br><br>Side-effects<br><ul><li>injection site reactions</li><li>less than 1 in 10,000 individuals will develop chickenpox</li></ul><br><b>Management of shingles</b><br><br>Oral aciclovir is first-line. One of the main benefits of treatment is a reduction in the incidence of post-herpetic neuralgia.<br><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img024.jpg"></td></tr><tr><td valign="top" align="left"></td><td align="right"></td></tr></tbody></table></center><br>*there is also a catch up campaign. The following is taken from the NHS vaccination website:<br><br><div class="bs-callout bs-callout-default"><i><i><br>Anyone aged 70 can have the shingles vaccine on the NHS. You become eligible for the vaccine from the first day of September after your 70th birthday.<br><br>From September 1 2015, the shingles vaccine will be offered routinely to people aged 70 and, as a catch up, to those aged 78. You become eligible for the vaccine on the first day of September 2015 after you've turned 70 or 78.<br><br>In addition, anyone who was eligible for immunisation in the previous two years of the programme but missed out on their vaccinations remains eligible until their 80th birthday. This includes:<br><ul><li>people aged 71 and 72 on 1 September 2015</li><li>people aged 79</li></ul><br>The shingles vaccine is not available on the NHS to anyone aged 80 and over because it seems to be less effective in this age group.<br></i></i></div></div>
`Herpes zoster ophthalmicus requires urgent ophthalmological review and 7-10 days of oral antivirals`
<div id="notecontent">Herpes zoster ophthalmicus (HZO) describes the reactivation of the varicella-zoster virus in the area supplied by the ophthalmic division of the trigeminal nerve. It <span class="concept" data-cid="5146">accounts for around 10% of case of shingles</span>.<br><br>Features<br><ul><li>vesicular rash around the eye, which may or may not involve the actual eye itself</li><li><span id="concept_popover_id_4710" class="concept concept-0 trigger-link" data-cid="4710" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4710'>You've never been tested on this concept</div><br><div id='div_concept_rating4710' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(10,255,0)'>Importance: <b>98</b></span> </div>" data-original-title="Hutchinson's sign: vesicles extending to the tip of the nose. This is strongly associated with ocular involvement in shingles"><b>Hutchinson's sign: rash on the tip or side of the nose. Indicates nasociliary involvement and is a strong risk factor for ocular involvement</b></span></li></ul><br>Management<br><ul><li><span id="concept_popover_id_4373" class="concept concept-0 trigger-link" data-cid="4373" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4373'>You've never been tested on this concept</div><br><div id='div_concept_rating4373' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(122,255,0)'>Importance: <b>76</b></span> </div>" data-original-title="Herpes zoster ophthalmicus requires urgent ophthalmological review and 7-10 days of oral antivirals">oral antiviral treatment for 7-10 days</span><ul><li>ideally started within 72 hours</li><li>intravenous antivirals may be given for very severe infection or if the patient is immunocompromised</li><li><span id="concept_popover_id_5145" class="concept concept-0 trigger-link" data-cid="5145" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5145'>You've never been tested on this concept</div><br><div id='div_concept_rating5145' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(132,255,0)'>Importance: <b>74</b></span> </div>" data-original-title="Topical antiviral treatment is not given in herpes zoster ophthalmicus">topical antiviral treatment is not given in HZO</span></li></ul></li><li>topical corticosteroids may be used to treat any secondary inflammation of the eye</li><li>ocular involvement requires urgent ophthalmology review</li></ul><br>Complications<br><ul><li>ocular: conjunctivitis, keratitis, episcleritis, anterior uveitis</li><li>ptosis</li><li>post-herpetic neuralgia</li></ul></div>
!!Herpes simplex keratitis
most commonly presents with a dendritic corneal ulcer.
Features
* red, painful eye
* photophobia
* epiphora
* visual acuity may be decreased
* fluorescein staining may show an epithelial ulcer
Management
* immediate referral to an ophthalmologist
* topical aciclovir
!!Eczema herpeticum
describes a severe primary infection of the skin by herpes simplex virus 1 or 2.
It is more commonly seen in children with atopic eczema and often presents as a rapidly progressing painful rash.
On examination, monomorphic punched-out erosions (circular, depressed, ulcerated lesions) usually 1–3 mm in diameter are typically seen.
`As it is potentially life-threatening children should be admitted for IV aciclovir.`
!!Dermatitis herpetiformis
is an autoimmune blistering skin disorder associated with coeliac disease. It is caused by deposition of IgA in the dermis.
!!!Features
* itchy, vesicular skin lesions on the extensor surfaces (e.g. elbows, knees, buttocks)
!!!Diagnosis
* skin biopsy: direct immunofluorescence shows deposition of IgA in a granular pattern in the upper dermis
!!!Management
* gluten-free diet
* dapsone
>DIET and DAPSONE
<center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsx053.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a><span style="font-size:11px; color:LightGray;"> and with the kind permission of Prof Raimo Suhonen</span></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd054b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd054.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd054b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
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
<div id="body_content">
Also known as Osler-Weber-Rendu syndrome, hereditary haemorrhagic telangiectasia (HHT) is an <span class="concept" data-cid="6254">autosomal dominant</span> condition characterised by (as the name suggests) multiple telangiectasia over the skin and mucous membranes. Twenty percent of cases occur spontaneously without prior family history.<br><br>There are 4 main diagnostic criteria. If the patient has 2 then they are said to have a possible diagnosis of HHT. If they meet 3 or more of the criteria they are said to have a definite diagnosis of HHT:<br><ul><li>epistaxis : spontaneous, recurrent nosebleeds</li><li>telangiectases: multiple at characteristic sites (lips, oral cavity, fingers, nose)</li><li>visceral lesions: for example gastrointestinal telangiectasia (with or without bleeding), pulmonary arteriovenous malformations (AVM), hepatic AVM, cerebral AVM, spinal AVM</li><li>family history: a first-degree relative with HHT</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb088b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb088.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb088b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">The chest x-ray shows multiple pulmonary nodules representing arteriovenous malformations, the largest in the right mid-zone. The CT scan shows multiple hepatic arteriovenous malformations</div></div>
| !HICCUPS |<|
|''Advice: ''<br>• Breathe into plastic bag held over nose and mouth.<br>• Hold breath as long as possible 3-4 times.<br>• Hold breath, pinch the nose and drink water.|
|Chlorpromazine|Tab Chlorpromazine 50 mg TDS, 7 days|
|Al(OH),,3,,+<br>Mg(OH),,2,,+<br>Oxycaine|Syr Mucaine gel 2 tsp, TDS, 1-3 hours after meals, 7 days|
|Alprazolam|Tab Zolam 0.25 mg TDS 5 days|
|Baclofen|Tab Liofen 10 mg TDS, 7 days|
<div id="notecontent">The table below provides a brief summary of the potential causes of hip pain in adults<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Condition</th><th>Features</th></tr></thead><tbody><tr><td><b>Osteoarthritis</b></td><td>Pain exacerbated by exercise and relieved by rest<br>Reduction in internal rotation is often the first sign<br>Age, obesity and previous joint problems are risk factors</td></tr><tr><td><b>Inflammatory arthritis</b></td><td>Pain in the morning<br>Systemic features<br>Raised inflammatory markers</td></tr><tr><td><b>Referred lumbar spine pain</b></td><td>Femoral nerve compression may cause referred pain in the hip<br>Femoral nerve stretch test may be positive - lie the patient prone. Extend the hip joint with a straight leg then bend the knee. This stretches the femoral nerve and will cause pain if it is trapped</td></tr><tr><td><b>Greater trochanteric pain syndrome (Trochanteric bursitis)</b></td><td>Due to repeated movement of the fibroelastic iliotibial band<br>Pain and tenderness over the lateral side of thigh<br>Most common in women aged 50-70 years</td></tr><tr><td><b>Meralgia paraesthetica</b></td><td>Caused by compression of lateral cutaneous nerve of thigh<br>Typically burning sensation over antero-lateral aspect of thigh</td></tr><tr><td><b>Avascular necrosis</b></td><td>Symptoms may be of gradual or sudden onset<br>May follow high dose steroid therapy or previous hip fracture of dislocation</td></tr><tr><td><b>Pubic symphysis dysfunction</b></td><td>Common in pregnancy<br>Ligament laxity increases in response to hormonal changes of pregnancy<br>Pain over the pubic symphysis with radiation to the groins and the medial aspects of the thighs. A waddling gait may be seen</td></tr><tr><td><b>Transient idiopathic osteoporosis</b></td><td>An uncommon condition sometimes seen in the third trimester of pregnancy<br>Groin pain associated with a limited range of movement in the hip<br>Patients may be unable to weight bear<br>ESR may be elevated</td></tr></tbody></table></div></div>
<div id="notecontent">The table below provides a brief summary of the potential causes of hip problems in children<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Condition</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><b>Development dysplasia of the hip</b></td><td>Often picked up on newborn examination<br>Barlow's test, Ortolani's test are positive<br>Unequal skin folds/leg length<br> </td></tr><tr><td><b>Transient synovitis (irritable hip)</b></td><td>Typical age group = 2-10 years<br>Acute hip pain associated with viral infection<br>Commonest cause of hip pain in children</td></tr><tr><td><b>Perthes disease</b></td><td>Perthes disease is a degenerative condition affecting the hip joints of children, typically between the ages of 4-8 years. It is due to avascular necrosis of the femoral head<br><br>Perthes disease is 5 times more common in boys. Around 10% of cases are bilateral<br><br>Features<br><ul><li>hip pain: develops progressively over a few weeks</li><li>limp</li><li>stiffness and reduced range of hip movement</li><li>x-ray: early changes include widening of joint space, later changes include decreased femoral head size/flattening</li></ul></td></tr><tr><td><b>Slipped upper femoral epiphysis</b></td><td>Typical age group = 10-15 years <br>More common in obese children and boys<br>Displacement of the femoral head epiphysis postero-inferiorly <br>Bilateral slip in 20% of cases<br>May present acutely following trauma or more commonly with chronic, persistent symptoms <br><br>Features<br><ul><li>knee or distal thigh pain is common</li><li>loss of internal rotation of the leg in flexion</li></ul></td></tr><tr><td><b>Juvenile idiopathic arthritis (JIA)</b></td><td>Preferred to the older term juvenile chronic arthritis, describes arthritis occurring in someone who is less than 16 years old that lasts for more than three months. Pauciarticular JIA refers to cases where 4 or less joints are affected. It accounts for around 60% of cases of JIA<br><br>Features of pauciarticular JIA<br><ul><li>joint pain and swelling: usually medium sized joints e.g. knees, ankles, elbows</li><li>limp</li><li>ANA may be positive in JIA - associated with anterior uveitis</li></ul></td></tr><tr><td><b>Septic arthritis</b></td><td>Acute hip pain associated with systemic upset e.g. pyrexia. Inability/severe limitation of affected joint</td></tr></tbody></table></div><br><b>Image gallery</b><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb089b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb089.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb089b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Perthes disease - both femoral epiphyses show extensive destruction, the acetabula are deformed</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb090b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb090.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb090b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Perthes disease - bilateral disease</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb011b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb011.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb011b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Slipped upper femoral epiphysis - left side</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb091b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb091.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb091b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Slipped upper femoral epiphysis - left side</div></div>
---
>PERTHES is PACHADI PACHADI(Necrosis)
---
>SLIPS after 10 - PERTHES before 10
---
* HirschSprung is most common cause of newborn intestinal obstruction with an incidence of around 1.65 per 10,000 live births, with a male to female ratio of 2:1.
* MeconiumIleus is a close differential but a rare condition affecting only 1 per 25,000 live births.
<div id="notecontent">Hirsutism is often used to describe androgen-dependent hair growth in women, with hypertrichosis being used for androgen-independent hair growth<br><br>Polycystic ovarian syndrome is the most common causes of hirsutism. Other causes include: <br><ul><li>Cushing's syndrome</li><li>congenital adrenal hyperplasia</li><li>androgen therapy</li><li>obesity: thought to be due to insulin resistance</li><li>adrenal tumour</li><li>androgen secreting ovarian tumour</li><li>drugs: phenytoin, <span class="concept" data-cid="6014">corticosteroids</span></li></ul><br>Assessment of hirsutism<br><ul><li>Ferriman-Gallwey scoring system: 9 body areas are assigned a score of 0 - 4, a score > 15 is considered to indicate moderate or severe hirsutism</li></ul><br>Management of hirsutism<br><ul><li>advise weight loss if overweight</li><li>cosmetic techniques such as waxing/bleaching - not available on the NHS</li><li>consider using combined oral contraceptive pills such as co-cyprindiol (Dianette) or ethinylestradiol and drospirenone (Yasmin). Co-cyprindiol should not be used long-term due to the increased risk of venous thromboembolism</li><li>facial hirsutism: topical eflornithine - contraindicated in pregnancy and breast-feeding</li></ul><br>Causes of hypertrichosis<br><ul><li>drugs: minoxidil, ciclosporin, diazoxide</li><li>congenital hypertrichosis lanuginosa, congenital hypertrichosis terminalis</li><li>porphyria cutanea tarda </li><li>anorexia nervosa</li></ul></div>
!!Introduction and greeting:
* Hello Mr. xyz, good morning or good afternoon, I am Dr. Kadapa, it is nice to meet you (shake hand).
* Are you comfortable in this room.... Let me make more comfortable by draping
* What brings you in today?
* Could you please describe me more about your problem?
* I need to ask you some questions regarding your problem. Let me know of any difficulty in understanding the questions.
* Do you mind if I take a note of our conversation? Thanks
>LO PDF IQ R AAA
!!!Location:
* "Can you please show me where exactly the pain/problem is?"
* If the C.C is a pain -"Can you show me the exact spot with your finger?"
!!!Radiation:
* pain
* "Does it move anywhere?"
!!!Onset, Progression, Duration:
* “WHEN did you first notice?"**
* "When did it first start”
* "HOW did your problem start?"(was it all of sudden or progressive)
* What were you doing then?
!!!Frequency:
* "Is it constant?" or "Does it come and go?"
* If it is intermittent, "How often does it occur?", "How long does it last?", "How do you feel between attacks?"
!!!Intensity:
* On a scale of... how would you rate the pain
* If the chief complaint is not a pain you can assess the severity by asking questions like these.
** "How bad is it?",
** "Does it interfere with your daily activities?", "Does it disturb your sleep?"
!!!Quality:
* "How would you describe your pain?"
* "What does it feel like?" "I mean is it crampy? sharp? throbbing? burning?"
!!!Aggravating Factors:
* "What were you doing when it first began?", "Have you ever found anything that makes your problem/pain worse or bad?
* "Do you have any idea of what might have brought this on?" or "What brings it on?".
!!!Alleviating Factors:
* "Have you ever found anything that makes your pain or problem better?", Continue "Have you treated yourself?", "Has
the treatment helped?"
!!!Associated problems:
* Do you have any other symptoms beside "Chest Pain" etc.?
* "Like what?"
!!!Fever:
* "Do you have fever?"
** If yes then "How long have you had fever?"
** "Is it a continuous or intermittent fever?"
** "Is/Was it associated with chills,
** is/was there any sweating?"
!!!Cough:
* "Do you have a cough?"
* "Do you bring up sputum?"
** "what color is/was it?"
** "Is/Was there any blood in it?"
** "Is/Was it foul smelling?"
* "How much is/was it?" "Is it a tea spoon or table spoon or a cupful?"
* Chronic Cough patients --HIV status and tuberculosis*.
* ACE inhibitors*.
!!!Shortness of breath:
* "Have you ever had any problems with your breathing?"(Wheezing?)
* "Do you have to stop to rest to catch your breath?"
* "Have you had any attacks of breathlessness in the night?" (PND)
* "Do you have trouble lying flat in bed?" (orthopnea)
!!!Nausea and vomiting:
* "Do you feel nauseated?"
* "Have you had vomitings ? "
** "How many times?
** What does the vomitus look like?
** What color was it?
** Was there any blood?"
** Nature of Vomiting
!!!Headache:
* "Do you have any headache?"
!!!Edema:
* "Do you have any problems of swelling of arm/legs?"
** If yes " where did you notice it first? was it on the face or leg?"
** "Is the swelling more during morning or evening?"
!!!Thyroid:
* "Have you ever had problems adjusting to temperatures?"
* "Is there any change in your voice recently?" (hoarseness in hypothyroidism)
* Did you notice any increase in hair loss
* Did you notice any change in the texture of the skin
* "Have you noticed any change in your bowel habits recently?" (constipation in hypo and diarrhea in hyperthyroidism)
* "Has your weight changed anyway lately?"
!!Past Medical History:
>PAM HUGS FOSS
Ok Mr. xyz now I would like to ask few questions regarding your past medical health. Is that ok with you?"
!!!Previous episodes of chief complaint:
*"Have you ever had similar problems in the past?"
!!!Allergic history:
* “Are you allergic to anything?"
* If the case is related to allergy, ( C/O Shortness of breath, rash, arthritis….. ) then you can elicit the history in
the following way:
* “Are you allergic to pets? (Give a pause and ask for the next allergen)
* Drugs?
* Any specific foods?
* Cold and dust allergy?”
** ”Could you please describe more about your allergic problem?"
If he doesn’t open up properly then ask the following questions
* “ How often do you get allergic episodes?
* Are you taking any medication for that?
* What kind of allergic reactions did you have?"
!!!Medical problems in the past:
* Do you have high Blood Pressure.
* Do you have Diabetes.
* In cases related to specific systems:
* CNS - "Have you ever had any stroke?"
* "Do you have any history of migraine headaches?"
* "Have you ever had any seizures?".
* CVS - "Have you ever had heart problems like heart attack or heart failure?"
* RS - "Have you ever had tuberculosis?"
* "Do you have a history of asthma?"
* "Have you ever had any lung problems?"
* GIT - "Have you ever had stomach problems or ulcers?"
* "Have your ever had any problems with your gallbladder or liver?".
* RENAL- "Have you ever had any history of kidney infections?"
* "Have you ever had any kidney stones?"
* "Have you ever had any problems with your prostate?"
* THYROID PROBLEMS (Never forget to ask about thyroid as many cases (Ex: SP with C/O weight loss/weight gain,
Depression, Amenorrhea etc) are related to thyroid. They will be ready to tell you if you just ask them. They might also
give you directly the name of the disease.. like Hashimoto’s Thyroiditis, Goiter etc.
* Cancers - "Have you ever diagnosed with any type of cancer?"
!!!Hospitalization:
* "Have you ever been hospitalized?", What for?" "When?".
* "Have you ever had any surgery?", "what for?" "When?".
* "Have you ever been involved in a serious accident?", "Did you break any bones?", "Did you have any serious head
injury?".
!!!Urinary complaints:
* "Do you have any trouble with your urine?"
* If related to Genitourinary system the take a detailed history.
** "Have you had pain or burning when you urinate?"
** 'Did you ever have to rush to urinate?"
** "How often do you urinate?
** Do you wake up in the nights to urinate?"
** "Do you have any hesitation to urinate?"
** "Did you notice any blood in your urine?"
** "Was there any pus in your urine?"
** "Do you have to strain during urination?"
** "How is your flow of urine? Is it continuous or is there any dribbling after urination?”
** "Do you feel fullness of bladder even after passing urine?"
** "Have you ever passed urine without your knowledge?"
!!!Gastro intestinal problems:
* “ Do you have any problem with your bowel movements?”
** "How often do you move your bowels?"
** "Have your bowel movements changed?"
** "Are they hard or soft?" "What consistency?" "What color?"
** "Have you noticed any black or tarry stools?"
!!!Sleep:
* “Do you have any problem with your sleep?”
** Do you have difficulty falling asleep? Or maintaining sleep? Or early wakeup?
* All psychiatric cases.
!!!Family History:
“Ok Mr. xyz now I would like to ask few questions regarding your family's health, Is that ok with you?”
* “Does anyone in your family have similar problems?”
* “Are your parents living?"
* If SP says YES, then ask "How is their health?"
* If SP says NO, show some empathy like “Oh! I am sorry to hear that, Could you please tell me the cause of their
death?"
* If necessary ask for the family history of diabetes, high blood pressure, stroke, heart problems.
!!!Obstetric and Gyn History:
“Ok Mrs. xyz now I would like to ask few questions regarding your gynecological health, Is that ok with you?”, continue
as follows:
* If it is not a Obstetrical/Gynecological case just ask :
**1. “When was your last menstrual period?”
**2. “Are/Were your cycles regular?”
If it is a OB/Gyn case enquire about
** "How old were you when you had your first period?"
** "Are your periods regular?"
** "How many days does your period last?"
** "Have you ever bleed between cycles?"
** "How many pads do you use in a heavy day?"
** "Do you have abdominal cramps/pain with your periods?"
** "Did you ever notice any bleeding after intercourse?"
** "When was your last menstrual period?”
!!!Vaginal discharge:
* "Have you ever had any vaginal discharge?"
** “What is the color of the discharge?
** Does it have any bad odor?
** Do you have any vaginal itching?"
* "Have you had any sores or infections around the vagina?"
!!!Pregnancy:
* “Have you ever been pregnant?”
** "How many times?"
** "Any miscarriages or abortions?".
** “How many times did you abort?
** In which month/week of your pregnancy?
** Do you know the reason (s) for the abortion?”
** "Have you had any other problems or complications with the pregnancies?"
** "How were the births?"
** " Have you had any complications during delivery?"
!!!Abdominal pain:
* “Have you ever had any pain in your belly?”
* If YES --all the questions given under pain in present history
!!!Pap smear:
* "Have you been getting regular pap smears?"
* "When did you have the last Pap smear?"
!!!Sexual History:
Ok Mr. xyz Now I would like to ask few questions about your sexual history, please understand it will be kept
confidential between you and Me, ….try to be as honest as possible. Is that ok with you?
* “Are you sexually active?”
** “Who is your sexual partner?"
** "Do you have any other sexual partners?"
** “Are you satisfied with your sexual life?"
** If NO enquire the reason,
** "Do you have any problems in your sexual life?”
** "Any loss of interest in sex?"
** "Are you able to reach a orgasm?"
* “Do you use any means of contraception?”
** If YES “What type of contraception do you use?
** Do you use it regularly?
* For high risk groups like patients who are not using barrier methods of contraception, patients with multiple sexual
partners, patients with homosexual history continue with following questions: (Note: most of the time they have this
history and so never miss it.
* “Have you ever been tested/treated for sexually transmitted diseases?”
* “Have you ever been tested for HIV?”
!!!Social history:
“OK Mr. Brown now I would like to know about your social habits and personal life style, is that ok with you?”
!!!Appetite:
* "How is your appetite?"
!!!Diet:
* "Can you please tell me about your diet"
* ”What does your diet mainly consist?”
* "Are you on a special diet?"
* For peri/postmenopausal women ask "Do you take calcium supplements?".
!!!Weight:
* “Has your weight changed anyway?”
** If YES: “How much? In what period of time?”
!!!Smoking:
* “Do you use tobacco? Do you smoke?”
* If NO “Have you ever smoked in the past?“
** If YES “How many packs do you smoke per day?
** For how long have you been smoking?"
** "Have you ever thought about quitting/attempted to quit?"
!!!Alcohol:
* “Do you drink any type of alcoholic beverages?"
* If NO “Have you ever consumed alcohol in the past?“
** If YES “What type of beverage do you take?
** How much do you drink per day?
** "How long have you been drinking?"
* Always keep in mind about the CAGE questionnaires for suspected alcohol abuse cases ( Ex. upper GI bleeding, Right upper quadrant pain, epigastric pain.)
* "Have you ever tried to cut down on alcohol drinking?"
* "Have you ever been annoyed by other people for your drinking?"
* "Have you ever had guilty feelings about your alcohol drinking?"
* "Do you drink alcohol early morning?"
!!!Drugs:
* "Are you currently taking any type of over the counter medications? any prescription medications?"
* "Have you ever tried any recreational type of drugs?"
** If YES to any of the questions ask “What kind of drugs?", "How long have you been taking them?”, "Have you ever injected drugs?".
!!!Occupation & exposure:
* “ Do you work? What type of work do you do?", "Is it a stressful job?"
* "Are you exposed to any health hazards in your work or personal life?"
* "Are your work conditions safe?"
* "Do your job involve prolonged sun exposure?" ( for a case of rash)
* "Do you expose to loud noises at work?" (for a case of hearing loss)
!!!Exercise:
* "Do you exercise regularly?"
!!!Stress:
* "Do you have any stresses from your family?"
!!!Travel:
"Have you traveled outside the United states in the resent years?", "When?", "Where?".
!!Special Situations:
!!!Angry Patient:
* Mr. xyz, you seem to be very angry, could you please tell me why that is so? Is there any way that I can help you.?
!!!Uncooperative patient:
* "Mr. XYZ in order to help you, I need to properly understand your problem. For that, I have to do this test. It won't take more than a minute. I am here to assist you. ok?"
!!!Pain in hand:
* "Does your job involve repetitive hand movements like key board operation." (Carpal tunnel syndrome).
!!!Insect bite:
* "Do you remember being bitten by any insects like ticks and mosquitoes?"( for any rash case)
!!!Trauma patient(poor):
* "We have a social worker and he/she will find out financial help for you."
!!!Over talkative patient:
* "Excuse me Mr. xyz, sorry to interrupt you. I know these things have really been bothering you. However I need tofocus completely on your present situation.
* Some patients will respond normally but some patients will say "Are you interrupting me?". Don't worry they have been told to act like that. Say the same thing again and say sorry once again.
!!!General:
* If you have to say I don’t know-- "I don't know yet"
!!!Closing:
* Mr.XYZ.. thanks for your co-operation.
* Now I would like to sit down and talk what I think so far.
* You just told me that you have ______and _______
* From the information I got from physical, I am considering a couple of possibilities.
* It probably be ______or possibly __________
* I need to run some tests like _______ and _______ in order to know more about your problem.
* When I have the results with me, we will meet again and go over everything.
* Does that sounds OK?
* Alcohol/Smoking/Barrier Method counselling
Mr.xyz, I found that you smoke cigarettes, take alcoholic beverages and you don’t use barrier methods for contraception.
Smoking causes lung diseases and many types of cancers. Taking alcohol causes Liver diseases and causes cancers. Unsafe
sexual methods can transmit venereal diseases. I strongly recommend quitting these. Would you like to quit now. If you
like to quit anytime in the future, don’t hesitate to contact me. I would be happy to help you. I will ask nurse to give
you my contact info. Does that sounds good?
* Do you have any other questions or concerns?
* I will try to make you feel better. Thank you. Take care.">CONTACT US</a></li>
Diarrhoea is common in patients with HIV. This may be due to the effects of the virus itself (HIV enteritis) or opportunistic infections
Possible causes
* Cryptosporidium + other protozoa (most common)
* Cytomegalovirus
* Mycobacterium avium intracellulare
* Giardia
Cryptosporidium is the most common infective cause of diarrhoea in HIV patients. It is an intracellular protozoa and has an incubation period of 7 days. Presentation is very variable, ranging from mild to severe diarrhoea. A modified Ziehl-Neelsen stain (acid-fast stain) of the stool may reveal the characteristic red cysts of Cryptosporidium. Treatment is difficult, with the mainstay of management being supportive therapy*
Mycobacterium avium intracellulare is an atypical mycobacteria seen with the CD4 count is below 50. Typical features include fever, sweats, abdominal pain and diarrhoea. There may be hepatomegaly and deranged LFTs. Diagnosis is made by blood cultures and bone marrow examination. Management is with rifabutin, ethambutol and clarithromycin
*nitazoxanide is licensed in the US for immunocompetent patients
<div id="notecontent">Kaposi's sarcoma<br><ul><li>caused by <span id="concept_popover_id_950" class="concept concept-3-u trigger-link" data-cid="950" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative950'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating950' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(61,255,0)'>Importance: <b>88</b></span> </div>" data-original-title="Kaposi's sarcoma - caused by HHV-8 (human herpes virus 8)">HHV-8 (human herpes virus 8)</span></li><li><span class="concept" data-cid="9890">presents as purple papules or plaques on the skin or mucosa</span> (e.g. gastrointestinal and respiratory tract)</li><li>skin lesions may later ulcerate</li><li>respiratory involvement may cause massive haemoptysis and pleural effusion</li><li>radiotherapy + resection</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img031.jpg"></td></tr><tr><td valign="top" align="left"></td><td align="right"></td></tr></tbody></table></center><div class="imagetext">Kaposi's sarcoma in a patient with HIV</div></div>
HLA antigens are encoded for by genes on chromosome 6. HLA A, B and C are class I antigens whilst DP, DQ, DR are class II antigens. Questions are often based around which diseases have strong HLA associations. The most important associations are listed below:
HLA-A3
*HemoChromatosis
HLA-B51
*BehCet's
HLA-B27
* AnkylosingSpondylitis
* ReiTer's
* acute AnteriorUveitis
HLA-DQ2/DQ8
*CeLiac
HLA-DR2
*narcolepsy
*GoodPasture's
HLA-DR3
* dermatitis herpetiformis
* Sjogren's syndrome
* [[PBC]]
HLA-DR4
* type 1 diabetes mellitus*
* rheumatoid arthritis - in particular the DRB1 gene (DRB1*04:01 and DRB1*04:04 hence the association with DR4)
*type 1 diabetes mellitus is associated with HLA-DR3 but is more strongly associated with HLA-DR4.
---
>GOOD NIGHT is 2 words
*DR2 - GOOD pasture - NARCOlepsy
---
>DR3 are 3 associations
* Dermatitis herpetiformis with Celiac
* Sjogrens with RA
* PbC with above two, systemic sclerosis and thyroid
---
>DR4 is most important - T1DM(also DR3) - RA
---
>B27 are related
*AnkyLosing - AntUveitis - ReiTers
---
>BET about Area 51
*BehCet's in B51
---
Causes of hoarseness include:
* voice overuse
* smoking
* viral illness
* HypoThyroid
* gastro-oesophageal reflux
* laryngeal cancer
* lung cancer
When investigating patients with hoarseness a chest x-ray should be considered to exclude apical lung lesions.
!!Suspected laryngeal cancer: referral guidelines
A suspected cancer pathway referral to an ENT specialist should be considered for people aged 45 and over with:
* persistent unexplained hoarseness or
* An unexplained lump in the neck.
<div id="body_content">
Hypertrophic obstructive cardiomyopathy (HOCM) is an <span class="concept" data-cid="1205">autosomal dominant</span> disorder of muscle tissue caused by defects in the genes encoding contractile proteins. The estimated prevalence is 1 in 500. HOCM is important as it is the most common cause of <span class="concept" data-cid="870">sudden cardiac death in the young</span>.<br><br>Pathophysiology<br><ul><li>the most common defects involve a mutation in the <span class="concept" data-cid="9140">gene encoding β-myosin heavy chain protein or myosin-binding protein C</span></li><li>results in <span class="concept" data-cid="10114">predominantly diastolic dysfunction</span><ul><li>left ventricle hypertrophy → <span class="concept" data-cid="10118">decreased compliance</span> → decreased cardiac output</li></ul></li><li>characterized by <span class="concept" data-cid="10119">myofibrillar hypertrophy with chaotic and disorganized fashion myocytes ('disarray') and fibrosis on biopsy</span></li></ul><br>Features<br><ul><li>often asymptomatic</li><li><span class="concept" data-cid="2381">exertional dyspnoea</span></li><li>angina</li><li><span class="concept" data-cid="10115">syncope</span><ul><li>typically following exercise</li><li>due to subaortic hypertrophy of the ventricular septum, resulting in functional aortic stenosis</li></ul></li><li><span class="concept" data-cid="869">sudden death</span> (most commonly due to <span class="concept" data-cid="10116">ventricular arrhythmias</span>), arrhythmias, heart failure</li><li>jerky pulse, large 'a' waves, double apex beat</li><li>ejection systolic murmur<ul><li><span class="concept" data-cid="9674">increases with Valsalva manoeuvre and decreases on squatting</span></li><li>hypertrophic cardiomyopathy may impair mitral valve closure, thus causing regurgitation</li></ul></li></ul><br>Associations<br><ul><li><span class="concept" data-cid="10120">Friedreich's ataxia</span></li><li><span class="concept" data-cid="10121">Wolff-Parkinson White</span></li></ul><br><span class="concept" data-cid="4926">Echo findings</span> - mnemonic - MR SAM ASH<br><ul><li>mitral regurgitation (MR)</li><li>systolic anterior motion (SAM) of the anterior mitral valve leaflet</li><li>asymmetric hypertrophy (ASH) </li></ul><br>ECG<br><ul><li>left ventricular hypertrophy</li><li>non-specific ST segment and T-wave abnormalities, progressive T wave inversion may be seen</li><li>deep Q waves</li><li>atrial fibrillation may occasionally be seen</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg063b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg063.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg063b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg063c.jpg" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">ECG showing typical changes of HOCM including LVH and T wave inversion</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg068b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg068.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg068b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg068c.png" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">This young male patient was shown to have HOCM. Note the LVH and deep ST depression and T-wave inversions</div></div>
<div id="body_content">
Holmes-Adie pupil is a benign condition most commonly seen in women. It is one of the differentials of a dilated pupil.<br><br>Overview<br><ul><li>unilateral in 80% of cases</li><li>dilated pupil</li><li>once the pupil has constricted it remains small for an abnormally long time</li><li>slowly reactive to accommodation but very poorly (if at all) to light</li></ul><br>Holmes-Adie syndrome<br><ul><li>association of Holmes-Adie pupil with absent ankle/knee reflexes</li></ul></div>
!!Homocystinuria
is a rare autosomal recessive disease caused by a deficiency of cystathionine beta synthase. This results in severe elevations in plasma and urine homocysteine concentrations.
Features
* often patients have fine, fair hair
* musculoskeletal: may be similar to MarFan's - arachnodactyly etc
* neurological patients may have learning difficulties, seizures
* ocular: downwards (inferonasal) dislocation of lens
* increased risk of arterial and venous thromboembolism
* also malar flush, livedo reticularis
Diagnosis is made by the cyanide-nitroprusside test, which is also positive in cystinuria.
Treatment is vitamin B6 (pyridoxine) supplements.
<div id="notecontent">Hyperosmolar hyperglycaemic state (HHS) is a medical emergency which is extremely difficult to manage and has a significant associated mortality. Hyperglycaemia results in osmotic diuresis, severe dehydration, and electrolyte deficiencies. HHS typically presents in the elderly with type 2 diabetes mellitus (T2DM), however the incidence in younger adults is increasing. It can be the initial presentation of T2DM.<br><br>It is extremely important to differentiate HHS from diabetic ketoacidosis (DKA) as the management is different, and treatment of HHS with insulin (e.g. as part of a DKA protocol) can result in adverse outcomes. The first 24 hours of treatment is very labour intensive so these patients are best managed in either a medical high dependency unit.<br><br>HHS has a higher mortality than DKA and may be complicated by vascular complications such as myocardial infarction, stroke or peripheral arterial thrombosis. Seizures, cerebral oedema and central pontine myelinolysis (CPM) are uncommon but documented complications of HHS. Whilst DKA presents within hours of onset, HHS comes on over many days, and consequently the dehydration and metabolic disturbances are more extreme. <br><br>Pathophysiology<br><ul><li>Hyperglycaemia results in osmotic diuresis with associated loss of sodium and potassium</li><li>Severe volume depletion results in a significant raised serum osmolarity (typically > than 320 mosmol/kg), resulting in hyperviscosity of blood. </li><li>Despite these severe electrolyte losses and total body volume depletion, the typical patient with HHS, may not look as dehydrated as they are, because hypertonicity leads to preservation of intravascular volume.</li></ul><br>Clinical features<br><ul><li>General: fatigue, lethargy, nausea and vomiting</li><li>Neurological: altered level of consciousness, headaches, papilloedema, weakness</li><li>Haematological: hyperviscosity (may result in myocardial infarctions, stroke and peripheral arterial thrombosis)</li><li>Cardiovascular: dehydration, hypotension, tachycardia</li></ul><br>Diagnosis<br><ul><li>1. Hypovolaemia </li><li>2. Marked Hyperglycaemia (>30 mmol/L) without significant ketonaemia or acidosis</li><li>3. Significantly raised serum osmolarity (> 320 mosmol/kg)</li><li>Note: A precise definition of HHS does not exist, however the above 3 criteria are helpful in distinguishing between HHS and DKA. It is also important to remember that a mixed HHS / DKA picture can occur. </li></ul><br><b>Management</b> <br><br>The goals of management of HHS can be summarised as follows: <br><br><ul><li>1. Normalise the osmolality (gradually)</li><li>2. Replace fluid and electrolyte losses</li><li>3. Normalise blood glucose (gradually)</li></ul><br>Fluid replacement<br><ul><li>Fluid losses in HHS are estimated to be between 100 - 220 ml/kg (e.g. 10-22 litres in an individual weighing 100 kg).</li><li> The rate of rehydration will be determined by assessing the combination of initial severity and any pre-existing co-morbidities (e.g. heart failure and chronic kidney disease). Caution is needed, particularly in the elderly, where too rapid rehydration may precipitate heart failure but insufficient may fail to reverse an acute kidney injury.</li><li>Intravenous (IV) 0.9% sodium chloride solution is the first line fluid for restoring total body fluid. </li><li>It is important to remember that isotonic 0.9% sodium chloride solution is already relatively hypotonic compared to the serum in someone with HHS. Therefore in most cases it is very effective at restoring normal serum osmolarity. </li><li>If the serum osmolarity is not declining despite positive balance with 0.9% sodium chloride, then the fluid should be switched to 0.45% sodium chloride solution which is more hypotonic relative to the HHS patients serum osmolarity</li><li>IV fluid replacement should aim to achieve a positive balance of 3-6 litres by 12 hours and the remaining replacement of estimated fluid losses within the next 12 hours.</li><li>Existing guidelines encourage vigorous initial fluid replacement and this alone (without insulin) will result in a gradual decline in plasma glucose and serum osmolarity. A rapid decline is potentially harmful (see below) therefore insulin should NOT be used in the first instance unless there is significant ketonaemia or acidosis </li><li>The aim of treatment should be to replace approximately 50% of estimated fluid loss within the first 12 hours and the remainder in the following 12 hours. However this is just a guide, and clinical judgement should be applied, particularly in patient with co-morbidities such as heart failure and chronic kidney disease (which may limit the speed of correction). </li></ul><br>Monitoring response to treatment <br><ul><li>The key parameter in managing HHS is the osmolality to which glucose and sodium are the main contributors. Rapid changes of serum osmolarity are dangerous and can result in cardiovascular collapse and central pontine myelinolysis (CPM). </li><li>Guidelines suggest that serum osmolarity, sodium and glucose levels should be plotted on a graph to permit appreciation of the rate of change. They should be plotted hourly initially. </li><li>Not all laboratories have readily available access to serum osmolarity measurements. If not available then a calculated osmolarity can be estimated with 2Na + glucose + urea</li><li>Fluid replacement alone (without insulin) will gradually lower blood glucose which will reduce osmolality </li><li>A reduction of serum osmolarity will cause a shift of water into the intracellular space. This inevitably results in a rise in serum sodium (a fall in blood glucose of 5.5 mmol/L will result in a 2.4 mmol/L rise in sodium). This is not necessarily an indication to give hypotonic solutions. If the inevitable rise in serum Na+ is much greater than 2.4 mmol/L for each 5.5 mmol/L fall in blood glucose this would suggest insufficient fluid replacement. Rising sodium is only a concern if the osmolality is NOT declining concurrently. </li><li>Rapid changes must be avoided. A safe rate of fall of plasma glucose of between 4 and 6 mmol/hr is recommended. The rate of fall of plasma sodium should not exceed 10 mmol/L in 24 hours.</li><li>A target blood glucose of between 10 and 15 mmol/L is a reasonable goal. </li><li>Complete normalisation of electrolytes and osmolality may take up to 72 hours.</li></ul><br>Insulin <br><ul><li>Fluid replacement alone with 0.9% sodium chloride solution will result in a gradual decline of blood glucose and osmolarity</li><li>Because most patients with HHS are insulin sensitive (e.g. it usually occurs in T2DM), administration of insulin can result in a rapid decline of serum glucose and thus osmolarity.</li><li>Insulin treatment prior to adequate fluid replacement may result in cardiovascular collapse as the water moves out of the intravascular space, with a resulting decline in intravascular volume.</li><li>A steep decline in serum osmolarity may also precipitate CPM.</li><li>Measurement of ketones is essential for determining if insulin is required. </li><li>If significant ketonaemia is present (3β-hydroxy butyrate is more than 1 mmol/L) this indicates relative hypoinsulinaemia and insulin should be started at time zero (e.g. mixed DKA / HHS picture). The recommended insulin dose is a fixed rate intravenous insulin infusion given at 0.05 units per kg per hour.</li><li>If significant ketonaemia is not present (3β-hydroxy butyrate is less than 1 mmol/L) then do NOT start insulin.</li></ul><br>Potassium<br><ul><li>Patients with HHS are potassium deplete but less acidotic than those with DKA so potassium shifts are less pronounced</li><li>Hyperkalaemia can be present with acute kidney injury </li><li>Patients on diuretics may be profoundly hypokalaemic</li><li>Potassium should be replaced or omitted as required</li></ul></div>
<div id="body_content">
<span class="concept" data-cid="530">Features</span><br><ul><li><span class="concept" data-cid="531">miosis (small pupil)</span></li><li>ptosis</li><li>enophthalmos* (sunken eye) </li><li><span class="concept" data-cid="529">anhidrosis (loss of sweating one side)</span></li></ul><br>Distinguishing between causes<br><ul><li>heterochromia (difference in iris colour) is seen in congenital Horner's</li><li>anhidrosis: see below</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Central lesions</b></th><th><b>Pre-ganglionic lesions</b></th><th><b>Post-ganglionic lesions</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="529">Anhidrosis of the face, arm and trunk</span></td><td><span class="concept" data-cid="529">Anhidrosis of the face</span></td><td><span class="concept" data-cid="529">No anhidrosis</span></td></tr><tr><td><b>S</b>troke<br><b>S</b>yringomyelia<br>Multiple <b>s</b>clerosis<br>Tumour<br>Encephalitis</td><td>Pancoast's <b>t</b>umour<br><b>T</b>hyroidectomy<br><b>T</b>rauma<br>Cervical rib</td><td><b>C</b>arotid artery dissection<br><b>C</b>arotid aneurysm<br><b>C</b>avernous sinus thrombosis<br><b>C</b>luster headache</td></tr></tbody></table></div><br>*in reality the appearance is due to a narrow palpebral aperture rather than true enophthalmos</div>
!!!<center>''HOSPITAL ACQUIRED DIARRHOEA (C DIFF)''</center>
<hr>
* Metro 400 TDS 10ds
Urea breath test
* patients consume a drink containing carbon isotope 13 (13C) enriched urea
* urea is broken down by H. pylori urease
* after 30 mins patient exhale into a glass tube
* mass spectrometry analysis calculates the amount of 13C CO2
* should not be performed within 4 weeks of treatment with an antibacterial or within 2 weeks of an antisecretory drug (e.g. a proton pump inhibitor)
* sensitivity 95-98%, specificity 97-98%
* may be used to check for H. pylori eradication
Rapid urease test (e.g. CLO test)
* biopsy sample is mixed with urea and pH indicator
* colour change if H pylori urease activity
* sensitivity 90-95%, specificity 95-98%
Serum antibody
* remains positive after eradication
* sensitivity 85%, specificity 80%
Culture of gastric biopsy
* provide information on antibiotic sensitivity
* sensitivity 70%, specificity 100%
Gastric biopsy
* histological evaluation alone, no culture
* sensitivity 95-99%, specificity 95-99%
Stool antigen test
* sensitivity 90%, specificity 95%
`If No Uterus, only Estrogen. If Uterus present and <1yr symptoms, Cyclical combined otherwise, Continuous combined`
When a woman wishes to discuss commencing HRT, a detailed history is important to determine the menopausal status. This includes the date of her LMP and bleeding patterns prior to this. In this scenario, the woman would be considered to be peri-menopausal (as she has not been amenorrhoeic for 1year).
The main clinical indication for starting HRT is for the relief of vasomotor symptoms. However, it can also be used to prevent osteoporosis only in women diagnosed with premature menopause.
In women with a uterus, HRT should comprise an oestrogen combined with a progesterone. The progesterone is paramount in reducing the risk of endometrial cancer, that can occur with the use of unopposed oestrogen. In women who have undergone a hysterectomy continuous oestrogen-only therapy is given.
Women should be prescribed cyclical combined HRT if their LMP was less than 1 year ago and continuous combined HRT if they have:
* taken cyclical combined for at least 1 year or
* it has been at least 1 year since their LMP or
* it has been at least 2 years since their LMP, if they had premature menopause (menopause below the age of 40)
There are many non-hormonal treatments for vasomotor symptoms in women who are unable or unwilling to take HRT. These treatments include some selective serotonin and noradrenaline reuptake inhibitors, clonidine and gabapentin. Sertraline is not helpful in treating hot flushes.
```
The National Institute for Health and Clinical Excellence (NICE) do not recommend the use of herbal and complementary therapies for managing hot flushes and night sweats. Evening primrose oil has no proven benefit in reducing vasomotor symptoms.
```
HSP is an autoimmune vasculitis of childhood. It normally presents following a viral infection with a macular rash which progresses to a papular rash, which can look like bruising. Various other systemic symptoms can develop including joint pain and nephritis. Nephritis can present up to 3 months after the initial illness. This means that children with HSP who do not have haematuria on presentation require a urine dip at 6 month to ensure nephritis has not developed.
---
Henoch-Schonlein purpura (HSP) is an <span class="concept" data-cid="8406">IgA mediated small vessel vasculitis</span>. There is a degree of overlap with <span class="concept" data-cid="8408">IgA nephropathy</span> (Berger's disease). HSP is usually seen in children following an infection.<br><br><span class="concept" data-cid="2831">Features</span><br><ul><li><span class="concept" data-cid="8407">palpable purpuric rash</span> (with localized oedema) over buttocks and extensor surfaces of arms and legs</li><li>abdominal pain</li><li>polyarthritis</li><li>features of IgA nephropathy may occur e.g. haematuria, renal failure</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx107.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br>Treatment<br><ul><li>analgesia for arthralgia</li><li>treatment of nephropathy is generally supportive. There is inconsistent evidence for the use of steroids and immunosuppressants</li></ul><br>Prognosis<br><ul><li>usually excellent, HSP is a self-limiting condition, especially in children without renal involvement</li><li>around 1/3rd of patients have a relapse</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx106.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx105.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center>
There are two strains of the herpes simplex virus (HSV) in humans: HSV-1 and HSV-2. Whilst it was previously thought HSV-1 accounted for oral lesions (cold sores) and HSV-2 for genital herpes it is now known there is considerable overlap
!!!Features
* primary infection: may present with a severe gingivostomatitis
* cold sores
* painful genital ulceration
* recurrent clinical outbreaks can be induced by various stimuli, such as trauma, ultraviolet radiation, extremes in temperature, stress and immunosuppression
!!!Management
* gingivostomatitis: oral aciclovir, chlorhexidine mouthwash
* cold sores: topical aciclovir although the evidence base for this is modest
* genital herpes: oral aciclovir. Some patients with frequent exacerbations may benefit from longer term aciclovir
!!!Pregnancy
* elective caesarean section at term is advised if a primary attack of herpes occurs during pregnancy at greater than 28 weeks gestation
* women with recurrent herpes who are pregnant should be treated with suppressive therapy and be advised that the risk of transmission to their baby is low
<br>
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb007b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb007.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb007b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
<div class="imagetext">Pap smear. Multinucleated giant cells representing infection by the herpes simplex virus. Note the 3 M's; Multinucleation, Margination of the chromatin, Molding of the nuclei<br></div>
<br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/uwb051b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/uwb051.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Herpes simplex virus" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/uwb051b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
<div class="imagetext">Further Pap smear showing the cytopathic effect of HSV (multi-nucleation, ground glass & marginated chromatin)<br></div>
---
>One in Oral - 2 in 2 going place (Genital)
---
>PAP Smear - 3M
*''M''ultinucleation - ''M''argination of the chromatin - ''M''olding of the nuclei
Herpes simplex keratitis most commonly presents with a dendritic corneal ulcer.
Features
* red, painful eye
* photophobia
* epiphora
* visual acuity may be decreased
* fluorescein staining may show an epithelial ulcer
Management
* immediate referral to an ophthalmologist
* topical aciclovir
NICE published updated guidelines for the management of hypertension in 2019. Some of the key changes include:
* lowering the threshold for treating stage 1 hypertension in patients < 80 years from 20% to 10%
* angiotensin receptor blockers can be used instead of ACE-inhibitors where indicated
* if a patient is already taking an ACE-inhibitor or angiotensin receptor blocker, then a calcium channel blocker OR a thiazide-like diuretic can be used. Previously only a calcium channel blocker was recommended
!!!Blood pressure classification
This becomes relevant later in some of the management decisions that NICE advocate.
|! Stage |! Criteria |
|''Stage 1 hypertension''|Clinic BP >= 140/90 mmHg and subsequent ABPM daytime average or HBPM average BP >= 135/85 mmHg|
|''Stage 2 hypertension''|Clinic BP >= 160/100 mmHg and subsequent ABPM daytime average or HBPM average BP >= 150/95 mmHg|
|''Severe hypertension''|Clinic systolic BP >= 180 mmHg, or clinic diastolic BP >= 110 mmHg|
<center>
<img src="https://www.dropbox.com/s/2e73u44pg3ws1o9/HTN%20Mx.png?raw=1">
</center>
<dd>Flow chart showing simplified schematic for diagnosis hypertension following NICE guidelines</dd>
!!!Managing hypertension
!!!!Lifestyle advice should not be forgotten and is frequently tested in exams:
* a low salt diet is recommended, aiming for less than 6g/day, ideally 3g/day. The average adult in the UK consumes around 8-12g/day of salt. A recent BMJ paper* showed that lowering salt intake can have a significant effect on blood pressure. For example, reducing salt intake by 6g/day can lower systolic blood pressure by 10mmHg
* caffeine intake should be reduced
* the other general bits of advice remain: stop smoking, drink less alcohol, eat a balanced diet rich in fruit and vegetables, exercise more, lose weight
!!!!ABPM/HBPM >= 135/85 mmHg (i.e. stage 1 hypertension)
* treat if < 80 years of age AND any of the following apply; target organ damage, established cardiovascular disease, renal disease, diabetes or a 10-year cardiovascular risk equivalent to 10% or greater
* in 2019, NICE made a further recommendation, suggesting that we should 'consider antihypertensive drug treatment in addition to lifestyle advice for adults aged under 60 with stage 1 hypertension and an estimated 10-year risk below 10%. '. This seems to be due to evidence that QRISK may underestimate the lifetime probability of developing cardiovascular disease
!!!!ABPM/HBPM >= 150/95 mmHg (i.e. stage 2 hypertension)
* offer drug treatment regardless of age
!!!!Severe HTN 180/110 mmHg
*criteria for considering `immediate treatment` based on a clinic reading
!!!!For patients < 40 years consider specialist referral to exclude secondary causes
<center>
<img width=600 src="https://www.dropbox.com/s/xyq16ofzmzkwdlw/HTN%20Mx2.png?raw=1">
</center>
<dd>
Flow chart showing the management of hypertension as per current NICE guidelines</dd>
;RAM SWEET & YOUNG AGE (ACE)
:RAMipril - ACE-i or ARB if Age<55 or T2DM
!!!Step 1 treatment
* patients < 55-years-old or a background of type 2 diabetes mellitus: ''A''CE inhibitor or a ''A''ngiotension receptor blocker (''A''CE-i or ''A''RB): ''(A)''
** angiotensin receptor blockers should be used where ACE inhibitors are not tolerated (e.g. due to a cough)
* patients >= 55-years-old or of Afro-Caribbean origin: ''C''alcium channel blocker ''(C)''
** ACE inhibitors have reduced efficacy in patients of Afro-Caribbean origin are therefore not used first-line
!!!Step 2 treatment
* ''(A + C) or (A + D)''
* if already taking an ''A''CE-i or ''A''RB add a ''C''alcium channel blocker or a thiazide-like ''D''iuretic
* if already taking a ''C''alcium channel blocker add an ''A''CE-i or ''A''RB
** for patients of Afro-Caribbean origin taking a calcium channel blocker for hypertension, if they require a second agent consider an angiotensin receptor blocker in preference to an ACE inhibitor
!!!Step 3 treatment
* ''(A + C + D)''
* add a third drug to make, i.e.:
** if already taking an ''(A + C)'' then add a ''D''
** if already ''(A + D)'' then add a ''C''
!!!Step 4 treatment
* NICE define step 4 as resistant hypertension and suggest either adding a 4th drug (as below) or seeking specialist advice
* first, check for:
** confirm elevated clinic BP with ABPM or HBPM
** assess for postural hypotension.
** discuss adherence
* if potassium < 4.5 mmol/l add low-dose spironolactone
* if potassium > 4.5 mmol/l add an alpha- or beta-blocker
|!|!Clinic BP|!ABPM / HBPM|
|''Age < 80 years''|140/90 mmHg|135/85 mmHg|
|''Age > 80 years''|150/90 mmHg|145/85 mmHg|
!!!New drugs
!!!!Direct renin inhibitors
* e.g. Aliskiren (branded as Rasilez)
* by inhibiting renin blocks the conversion of angiotensinogen to angiotensin I
* no trials have looked at mortality data yet. Trials have only investigated fall in blood pressure. Initial trials suggest aliskiren reduces blood pressure to a similar extent as angiotensin converting enzyme (ACE) inhibitors or angiotensin-II receptor antagonists
* adverse effects were uncommon in trials although diarrhoea was occasionally seen
* only current role would seem to be in patients who are intolerant of more established antihypertensive drugs
;Labetalol for Pregnants
Drugs Causing Hypertension
* CorticoSteroids
* [[COCP]]
* CicloSporin
!!Huntington's disease
is an inherited neurodegenerative condition. It is a progressive and incurable condition that typically results in death 20 years after the initial symptoms develop.
Genetics
* autosomal dominant
* trinucleotide repeat disorder: repeat expansion of CAG
** as Huntington's disease is a trinucleotide repeat disorder, the phenomenon of anticipation may be seen, where the disease is presents at an earlier age in successive generations
* results in degeneration of cholinergic and GABAergic neurons in the striatum of the basal ganglia
* due to defect in huntingtin gene on chromosome 4
Features typical develop after 35 years of age
* chorea
* personality changes (e.g. irritability, apathy, depression) and intellectual impairment
* dystonia
* saccadic eye movements
`Diarrhoea which becomes bloody 1-3 days after its onset along with Haemolysis, anaemia, thrombocytopenia, a raised lactate dehydrogenase, urea and creatinine`
Haemolytic uraemic syndrome is generally seen in young children and produces a triad of:
* acute kidney injury
* microangiopathic haemolytic anaemia
* thrombocytopenia
Most cases are secondary (termed 'typical HUS'):
* classically Shiga toxin-producing Escherichia coli (STEC) 0157:H7 ('verotoxigenic', 'enterohaemorrhagic'). This is the most common cause in children, accounting for over 90% of cases
* pneumococcal infection
* HIV
* rare: systemic lupus erythematosus, drugs, cancer
Primary HUS ('atypical') is due to complement dysregulation.
Investigations
* full blood count: anaemia, thrombocytopaenia, fragmented blood film
* U&E: acute kidney injury
* stool culture
Management
* treatment is supportive e.g. Fluids, blood transfusion and dialysis if required
* there is no role for antibiotics, despite the preceding diarrhoeal illness in many patients
* the indications for plasma exchange in HUS are complicated. As a general rule plasma exchange is reserved for severe cases of HUS not associated with diarrhoea
* eculizumab (a C5 inhibitor monoclonal antibody) has evidence of greater efficiency than plasma exchange alone in the treatment of adult atypical HUS
<div id="body_content">
Primary hyperaldosteronism was previously thought to be most commonly caused by an adrenal adenoma, termed Conn's syndrome. However, recent studies have shown that <span class="concept" data-cid="812">bilateral idiopathic adrenal hyperplasia is the cause in up to 70% of cases</span>. Differentiating between the two is important as this determines treatment. Adrenal carcinoma is an extremely rare cause of primary hyperaldosteronism.<br><br><span class="concept" data-cid="2377">Features</span><br><ul><li><b>hypertension</b></li><li><b>hypokalaemia</b><ul><li>e.g. muscle weakness</li><li>this is a classical feature in exams but studies suggest this is seen in only 10-40% of patients</li></ul></li><li>alkalosis</li></ul><br>Investigations<br><ul><li>the 2016 Endocrine Society recommend that a <span class="concept" data-cid="10587">plasma <b>aldosterone/renin ratio is the first-line investigation</b></span> in suspected primary hyperaldosteronism<ul><li>should show high aldosterone levels alongside low renin levels (negative feedback due to sodium retention from aldosterone)</li></ul></li><li>following this a high-resolution CT abdomen and adrenal vein sampling is used to differentiate between unilateral and bilateral sources of aldosterone excess</li><li><span class="concept" data-cid="3370">Adrenal Venous Sampling (AVS)</span> can be done to identify the gland secreting excess hormone in primary hyperaldosteronism </li></ul><br>Management<br><ul><li>adrenal adenoma: surgery</li><li>bilateral adrenocortical hyperplasia: <span class="concept" data-cid="4523">aldosterone antagonist e.g. spironolactone</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb193b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb193.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb193b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">CT abdomen showing a right-sided adrenal adenoma in a patient who presented with hypertension and hypokalaemia. The adenoma can be seen 'next to' or 'below' the liver.</div></div>
;Features
*'bones, stones, groans and psychic moans'
*corneal calcification
*shortened QT interval on ECG
*hypertension
Two conditions account for 90% of cases of hypercalcaemia:
#Primary hyperparathyroidism: commonest cause in non-hospitalised patients
#Malignancy: the commonest cause in hospitalised patients. This may be due to number of processes, including; bone metastases, myeloma, PTHrP from squamous cell lung cancer
Other causes include
*sarcoidosis*
*vitamin D intoxication
*acromegaly
*thyrotoxicosis
*Addison's disease
*Milk-alkali syndrome
*drugs: thiazides, calcium containing antacids
*dehydration
*Paget's disease of the bone**
*other causes of granulomas may lead to hypercalcaemia e.g. Tuberculosis and histoplasmosis
**usually normal in this condition but hypercalcaemia may occur with prolonged immobilisation
!! Management
The initial management of hypercalcaemia is rehydration with normal saline, typically 3-4 litres/day. Following rehydration bisphosphonates may be used. They typically take 2-3 days to work with maximal effect being seen at 7 days
Other options include:
* calcitonin - quicker effect than bisphosphonates
* steroids in sarcoidosis
Loop diuretics such as furosemide are sometimes used in hypercalcaemia, particularly in patients who cannot tolerate aggressive fluid rehydration. However, they should be used with caution as they may worsen electrolyte derangement and volume depletion.
---
!!!<center>''HYPERCALCEMIA''</center>
---
//A 60-year-old man is admitted for severe diffuse bone pain and is found to have a calcium level of 11.2 mg/dl//
* Immediate Questions
* What other symptoms are present?
* The classic presentation of primary hyperparathyroidism is “stones, bones, moans, and groans” from renal calculi, osteitis fibrosa, constipation, and neuropsychiatric problems, respectively.
* Symptoms: fatigue, weakness, polyuria, polydipsia, bone pain, constipation, nausea, vomiting, anorexia, and mental status changes ranging from confusion to coma.
* Does the patient have any condition that could be related to hypercalcemia?
* Hypertension, peptic ulcer, and nephrolithiasis are associated with hyperparathyroidism.
* Is the patient on any medications that might cause hypercalcemia? Thiazide diuretics, vitamin D, and calcium supplements.
* Is there a family history of hypercalcemia?
* Multiple endocrine neoplasia (MEN)?
* MEN I includes primary hyperparathyroidism, hypersecretion of pancreatic islet hormones, pituitary adenoma, and possibly other endocrine tumors.
* MEN IIA consists of primary hyperparathyroidism, medullary carcinoma of the thyroid, and pheochromocytoma.
* Hyperparathyroidism is rare in MEN IIB.
* Has the patient been noted to have elevated calcium in the past?
* Longstanding hypercalcemia suggests primary hyperparathyroidism.
* Malignant disease is usually associated with recent-onset hypercalcemia.
* About 20% of patients with hypercalcemia have hyperparathyroidism, usually from a single hyperfunctioning adenoma. An elevated calcium, a low phosphate, and elevated or relatively elevated parathyroid hormone are characteristic findings. Most patients in whom hyperparathyroidism is diagnosed are asymptomatic.
* The most common cause of hypercalcemia in hospitalized patients is cancer, usually from bony metastasis or often from humoral factors produced by a tumor.
* Repeat levels for calcium along with a serum albumin or obtain an ionized calcium level.
* Always confirm an elevated calcium level and the severity of the hypercalcemia before initiating therapy.
* The phosphorus level is low in primary hyperparathyroidism; it is elevated in vitamin D intoxication.
* Alkaline phosphatase is increased in primary hyperparathyroidism, Paget’s disease, and bony metastases.
* Blood urea nitrogen and creatinine. Renal insufficiency exacerbates hypercalcemia or may be secondary to hypercalcemia.
* An increased total protein-to-albumin ratio suggests multiple myeloma. If the total protein-to-albumin ratio is elevated, then quantitative immunoglobulins and serum and urine protein electrophoresis should be ordered.
* Amylase and lipase. Hypercalcemia can cause pancreatitis.
* Urinalysis. Hematuria may arise from renal cell carcinoma or secondary to nephrolithiasis.
* Chest x-ray. Bilateral hilar adenopathy implies sarcoidosis. Also, carcinoma or lymphoma may be detected by chest x-ray. Osteopenia of the vertebral column may be evident on the lateral
* film.
* Abdominal x-rays. May reveal renal calcifications as a result of hypercalcemia; other findings may suggest carcinoma.
* Bone films. These are especially useful if there is localized bone pain; they may reveal osteolytic/osteoblastic lesions from carcinoma or the osteolytic lesions of multiple myeloma.
* Skull films and skeletal survey. Obtain if multiple myeloma is suspected.
* ECG: short QT interval, increased PR interval.
* Treat more aggressively with severe hypercalcemia > 11, or when the patient is symptomatic.
* Restrict calcium intake and encourage mobilization
* Treat underlying causes
* Institute saline diuresis.
* It is essential to restore the patient’s volume and then to maintain a urine output of at least 2 L/day.
* Lasix 20–80 mg IV Q 2–4 hr.
* Bisphosphonates.
* Calcitonin.
* Hydrocortisone 50–75 mg Q 6 hr
* Intravenous phosphates.
* Dialysis. This is a treatment of last resort.
!!!<center>''HYPERGLYCEMIA''</center>
<hr>
//A 44-year-old man is admitted because of chest pain. His glucose is 428 mg/dL//
* Immediate Questions
* What are the patient’s vital signs?
* Fever may indicate sepsis,which can exacerbate hyperglycemia.
* Hypotension or tachycardia may indicate volume depletion common in diabetic ketoacidosis (DKA) and hyperosmolar syndromes. Tachypnea may be due to Kussmaul respirations in DKA.
* Is the patient known to be diabetic?
* If Diabetic: noncompliance with medication/diet, sepsis, acute stress, glucocorticoid use, and myocardial infarction (MI)?
* If the patient is diabetic, what medications is he or she taking and when was the last meal in relation to the time of phlebotomy?
* Check urine ketones, if +ve start DKA protocol
* If HHS start protocol
* Get CXR; pneumonia?
* ECG to R/O MI
* Evaluate for sepsis? Peritonitis? Cholecystitis?
* Foot ulcers, cellulitis?
* CBC, KFT, Bicarb, amylase, lipase, ABG, urine ketones
* If no DKA or HHS start insulin sliding scale and admit
!!Hyperhidrosis
describes the excessive production of sweat.
!!!Management
* topical aluminium chloride preparations are first-line. Main side effect is skin irritation
* iontophoresis: particularly useful for patients with palmar, plantar and axillary hyperhidrosis
* botulinum toxin: currently licensed for axillary symptoms
* surgery: e.g. Endoscopic transthoracic sympathectomy. Patients should be made aware of the risk of compensatory sweating
!!Hyperkalaemia
* Plasma potassium levels are regulated by a number of factors including aldosterone, acid-base balance and insulin levels.
* Metabolic acidosis is associated with hyperkalaemia as hydrogen and potassium ions compete with each other for exchange with sodium ions across cell membranes and in the distal tubule.
* [[ECG|ECG Changes]] changes
**tall-tented T waves,
**small flat P waves,
**increased PR interval(also in HypoKalemia)
**widened QRS leading to a sinusoidal pattern, VT, VF and Asystole
!!!Causes
* acute kidney injury
* drugs*: potassium sparing diuretics, ACE inhibitors, angiotensin 2 receptor blockers, spironolactone, ciclosporin, heparin**
* metabolic acidosis
* AddiSon's disease
* rhabdomyolysis
* massive blood transfusion
Foods that are high in potassium:
* salt substitutes (i.e. Contain potassium rather than sodium)
* bananas, oranges, kiwi fruit, avocado, spinach, tomatoes
*beta-blockers interfere with potassium transport into cells and can potentially cause hyperkalaemia in renal failure patients - remember beta-agonists, e.g. Salbutamol, are sometimes used as emergency treatment
**both unfractionated and low-molecular weight heparin can cause hyperkalaemia. This is thought to be caused by inhibition of aldosterone secretion
---
!!!<center>''HYPERKALEMIA''</center>
<hr>
//A 64-year-old man with diabetes admitted for a myocardial infarction is found to have a potassium (K+) level of 7.1 mmol/L//
* Immediate Questions
* What are the patient’s vital signs?
* Hyperkalemia can result in life threatening ventricular arrhythmias.
* Get ECG STAT <input type="checkbox">
* What is the urine output? KFT?
* Is the patient receiving IV Kcl?
* Is the patient on any medications that could elevate the potassium? spironolactone, triamterene and amiloride; NSAIDs; ACEI
* Is the lab result correct? If hyperkalemia is unexpected or inconsistent after the preceding questions are answered, consider pseudohyperkalemia, especially if the ECG shows no changes of hyperkalemia.
* There are several causes of factitious hyperkalemia, the most common being from the tourniquet used to draw blood. A tight tourniquet around an exercising extremity can elevate the potassium as much as 2.0 mmol/L.
* Hemolysis of a blood sample before the chemical determination is another common source of error.
* Extreme leukocytosis (> 70,000) or thrombocytosis (> 1,000,000) can also elevate the serum potassium. If this is a possibility, obtain a plasma potassium.
* Acute metabolic acidosis?
* Tissue breakdown? rhabdomyolysis, burns, massive hemolysis, and tumor lysis?
* Administration of hypertonic mannitol or saline results in major increases in serum osmolality and thus may cause hyperkalemia.
* CKD?
* Acute renal failure?
* Adrenal insufficiency?
* Long-term anticoagulation with heparin?
* Check KFT with bicarb, ABG, CBC, <input type="checkbox">
* Start Hyperkalemia protocol
!!!<center>''HYPERKALEMIA PROTOCOL''</center>
* Signs and symptoms are uncommon and tend to occur only when the serum potassium exceeds 7.0 meq/L; symptoms can include muscle weakness and ventricular arrhythmias
* ECG findings commonly progress as follows: Peaked T waves, Prolonged PR and QRS intervals, and small P waves, Loss of P wave, further prolongation of QRS interval ("sine wave" pattern), and conduction delay that can manifest as bundle branch or AV nodal block
* Ventricular fibrillation or asystole can result
''Management''
* Confirm the patient is truly hyperkalemic (ie, exclude pseudohyperkalemia)
* Obtain ECG and, if signs of hyperkalemia are seen, place patient on cardiac monitor.
* Stabilize cardiac membranes with calcium: Give only for hyperkalemia with significant ECG findings (eg, widening of the QRS complex or loss of P waves, but not peaked T waves alone) or severe arrhythmias thought to be caused by hyperkalemia
* Give calcium gluconate 1000 mg (10 mL of 10 percent solution) also infused slowly; may be given peripherally in large vein; time to onset is immediate
* Calcium treatment may be repeated after 5 minutes if ECG changes persist; patient must be on cardiac monitor when receiving calcium; calcium can exacerbate digoxin toxicity
* Shift potassium into cells:
* Give insulin and glucose to hyperkalemic patients with ECG changes OR serum potassium ≥6.5 to 7 meq/L
* Insulin and glucose: Give IV bolus of regular insulin 10 units with 50 mL of a 25% glucose
* Give children regular insulin 0.2 units per gram of glucose, give glucose 1 g/kg; time to onset is 10 to 20 minutes; after insulin and glucose bolus therapy, start dextrose infusion; monitor fingerstick glucose closely
* Beta 2 agonist: May give albuterol 10 to 20 mg in 4 mL saline nebulized over 10 minutes (may use metered dose inhaler); pediatric dose 0.1 to 0.3 mg/kg; time to onset is 20 to 30 minutes; IV albuterol or epinephrine are alternatives
* Sodium bicarbonate: Provides minimal effect on shifting potassium intracellularly, even in acidemic patients; may give 150 meq in one liter of 5 percent dextrose in water at 250 mL/hour; do not give in same IV as calcium
* Since the effect of shifting potassium into the cells is transient, treatments to remove potassium are also required
* Remove potassium
* Give K-Bind sachet 15 to 30 grams of sodium polystyrene sulfonate orally; pediatric dose is 1 g/kg; although less preferable, sodium polystyrene sulfonate may be given as a retention enema (dose is 50 g) without sorbitol; time to onset is approximately 1 to 2 hours; may repeat dose after 4 to 6 hours based upon repeat serum potassium;
* Loop or thiazide diuretic: Provides only limited short-term effect; May give furosemide 20 to 40 mg IV; pediatric dose is 1 to 2 mg/kg IV; higher dose may be required with renal insufficiency; fluid losses must be replaced unless the patient is volume expanded
* Hemodialysis: Can be used if the conservative measures listed above fail, if hyperkalemia is severe, if the patient has renal failure, or if the patient has marked tissue breakdown and is releasing large amounts of potassium from injured cells
!!Hypernatraemia
Causes
* dehydration
* osmotic diuresis e.g. hyperosmolar non-ketotic diabetic coma
* diabetes insipidus
* excess IV saline
Hypernatraemia should be corrected with great caution. Although brain tissue can lose sodium and potassium rapidly, lowering of other osmolytes (and importantly water) occurs at a slower rate, predisposing to cerebral oedema, resulting in seizures, coma and death. Although there are no clinical guidelines by NICE or Royal College of Physicians at present, it is generally accepted that a rate of no greater than 0.5 mmol/hour correction is appropriate.
<center>
<img width=600 src="https://www.dropbox.com/s/gbo6znewtj5crer/hypernatremia.png?raw=1">
</center>
---
!!!<center>''HYPERNATREMIA''</center>
<hr>
//The clinical chemistry lab calls to tell you that the 65-year-old female patient admitted with pneumonia has a serum sodium of 155 mmol/L (normal: 136–145 mmol/L)//
* Immediate Questions
* Is the patient awake, alert, and oriented? Or, is the patient lethargic and confused?
* Convulsions, tremors, rigidity?
* What medications is the patient taking?
* Mannitol, steroids and salt tablets?
* What are the patient’s intake/output values for the past few days? -ve balance?
* Are there any underlying medical conditions?
* Does the patient have a condition that prevents access to water?
* Is the lab value accurate?
* What is the composition of fluids administered?
* Is there a history of polyuria and polydipsia? DM/DI?
* Thiazide diuretics and furosemide?
* Fever/Profuse sweating/GI loss/Vomiting/NG suction
* With shock, replenish volume with normal saline.
* If the patient is hemodynamically stable, replace volume with hypotonic saline (half-normal saline).
* Water loss without loss of sodium. Calculate the free water deficit:
* Weight (kg) × 0.60 = total body water
* Water deficit = total body water × 1 −[desired (Na)/Measured (Na+)]
* Give half of the calculated free water deficit in the first 12 hours and the remainder in the next 24 hours. Include maintenance fluids.
* Increase in total body sodium. Remove excess sodium, either by giving free water and diuretics or by dialysis with hypotonic dialysate.
* Treatment of underlying cause
!!! <center>''HYPERNATREMIA''</center>
@@display:block;text-align:center;[img[hypernatremia.png]]@@
''Treatment''
* Restore access to H2O or supply daily requirement of H2O (1 L/d)
* For typical 70-kg man, free H2O deficit (L) = ([Na]serum – 140)/3
* 1 L D5W given to 70-kg man with [Na] 160 mEq/L will decrease [Na] by 3.7 mEq
* Rate of decrease of Na should not exceed 0.5 mEq/L/h to avoid cerebral edema
* 70-kg man, 125 mL/h of free H2O will decrease [Na] by 0.5 mEq/L/h
* 1⁄2 NS (77 mEq/L) or 1⁄4 NS (38 mEq/L) provides both volume & free H2O (500 or 750 mL of free H2O per L, respectively); can give free H2O via NGT/OGT
* Formulas provide only estimates; therefore, recheck serum Na frequently
* Na overload: D5W loop diuretic
<hr>
* Hypernatremia is most often due to unreplaced water that is lost from the gastrointestinal tract (vomiting or osmotic diarrhea), skin (sweat), or the urine (diabetes insipidus or an osmotic diuresis due to glucosuria in uncontrolled diabetes mellitus or increased urea excretion resulting from catabolism or recovery from renal failure)
* Patients who present with hypernatremia usually have a serious underlying condition that impairs either their ability to respond to thirst or to experience thirst.
* Chronic hypernatremia – Hypernatremia is chronic if it has been present for longer than 48 hours.
* 5%D @ 1.35 mL/kg/hour or approx 70 mL/hr in a 50 kg patient and 100 mL/hr in a 70 kg patient.
* -The goal of this regimen is to lower the serum sodium by a maximum of 10 mEq/L in a 24-hour period.
* Acute hypernatremia – Hypernatremia is acute if it has been present for 48 hours or less.
* 5%D @ 3-6 mL/kg/hour
* The serum sodium and blood glucose should be monitored every one to two hours until the serum sodium is lowered below 145 mEq/L.
* Once the serum sodium concentration has reached 145 mEq/L, the rate of infusion is reduced to 1 mL/kg per hour and continued until normonatremia (140 mEq/L) is restored.
* The goal of this regimen is to lower the serum sodium by 1 to 2 mEq/L per hour and to restore normonatremia in less than 24 hours.
* Hyperglycemia may develop with rapid infusions of 5 percent dextrose; to avoid increased water losses from glycosuria, a slower rate of infusion or a change to 2.5 percent dextrose in water may be required after several hours.
* If patients are hypovolemic and hyperglycemic, with ongoing losses of sodium and water due to glycosuria, free water is usually administered as 0.45 percent saline rather than 5 percent dextrose in water; infusion of 0.45 percent saline at 6 to 12 mL/kg per hour will provide the same amount of electrolyte-free water as 3 to 6 mL/kg per hour of 5 percent dextrose in water.
* During treatment of chronic hypernatremia, the serum sodium should be monitored every four to six hours after the fluid repletion regimen is initiated.
<div id="body_content">
The Gell and Coombs classification divides hypersensitivity traditionally divides reactions into 4 types:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Type</th><th>Mechanism</th><th>Examples</th></tr></thead><tbody><tr><td><b>Type I - Anaphylactic</b></td><td>Antigen reacts with IgE bound to mast cells</td><td>• <span class="concept" data-cid="6506">Anaphylaxis</span><br>• Atopy (e.g. <span class="concept" data-cid="6508">asthma</span>, eczema and <span class="concept" data-cid="6507">hayfever</span>)</td></tr><tr><td><b>Type II - Cell bound</b></td><td>IgG or IgM binds to antigen on cell surface</td><td>• <span class="concept" data-cid="6509">Autoimmune haemolytic anaemia</span><br>• <span class="concept" data-cid="6510">ITP</span><br>• <span class="concept" data-cid="6511">Goodpasture's syndrome</span><br>• <span class="concept" data-cid="6520">Pernicious anaemia</span><br>• <span class="concept" data-cid="6521">Acute haemolytic transfusion reactions</span><br>• <span class="concept" data-cid="6522">Rheumatic fever</span><br>• Pemphigus vulgaris / <span class="concept" data-cid="6523">bullous pemphigoid</span></td></tr><tr><td><b>Type III - Immune complex</b></td><td>Free antigen and antibody (IgG, IgA) combine</td><td>• <span class="concept" data-cid="6512">Serum sickness</span><br>• <span class="concept" data-cid="6513">[[SLE]]</span><br>• <span class="concept" data-cid="6514">[[PSGN]]</span><br>• Extrinsic allergic alveolitis (especially acute phase)</td></tr><tr><td><b>Type IV - Delayed hypersensitivity</b></td><td>T-cell mediated</td><td>• <span class="concept" data-cid="6515">Tuberculosis</span> / <span class="concept" data-cid="6516">tuberculin skin reaction</span><br>• <span class="concept" data-cid="6517">Graft versus host disease</span><br>• <span class="concept" data-cid="6518">Allergic contact dermatitis</span><br>• <span class="concept" data-cid="6519">Scabies</span><br>• Extrinsic allergic alveolitis (especially chronic phase)<br>• <span class="concept" data-cid="6524">Multiple sclerosis</span><br>• <span class="concept" data-cid="6525">Guillain-Barre syndrome</span></td></tr></tbody></table></div><br>In recent times a further category has been added:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Type</th><th>Mechanism</th><th>Examples</th></tr></thead><tbody><tr><td><b>Type V</b></td><td>Antibodies that recognise and bind to the cell surface receptors. <br><br>This either stimulating them or blocking ligand binding</td><td>• Graves' disease<br>• Myasthenia gravis</td></tr></tbody></table></div></div>
----
!!!Hypersensitivity reactions can be divided into four types based on the mechanisms involved and time taken for a reaction to manifest.
* ''Type I hypersensitivity'' is also known as immediate or anaphylactic hypersensitivity and the presentation of this patient is highly suggestive of a Type I response. Reactions usually occur ''15 - 30 minutes'' from the time of exposure.
* ''Type II hypersensitivity'' is also known as cytotoxic hypersensitivity and is primarily mediated by antibodies of the IgM or IgG classes and complement.
* ''Type III hypersensitivity'' is also known as immune complex hypersensitivity and usually ''3 - 10 hours'' after antigen exposure.
* ''Type IV hypersensitivity'' is also known as cell mediated or delayed type hypersensitivity and features in many autoimmune and infectious diseases such as tuberculosis, leprosy and toxoplasmosis as well as contact dermatitis.
---
!!!<center>''HYPERTENSION''</center>
<hr>
//A 37-year-old woman complains of having a severe occipital headache for the past 6 hours. Her blood pressure is 220/140//
* Immediate Questions
* Is there a history of hypertension?
* Previously, what were the highest blood pressure levels?
* What is the patient’s medical regimen?
* Determine what medications the patient is taking and whether she is compliant.
* For example,she may have stopped taking clonidine (Arkamin) or a short-acting beta-blocker such as propranolol (Inderal), which can cause severe rebound hypertension.
* Is the patient experiencing any other symptoms besides headache?
* A patient with severe hypertension who has a headache with mental status changes may have hypertensive encephalopathy, which is a medical emergency.
* Other manifestations of end-organ damage from malignant hypertension include MI, angina pectoris, dyspnea (left ventricular dysfunction), dissecting aortic aneurysm, visual loss, nausea, vomiting, seizures, focal neurologic deficits, and a decrease in urinary output.
* ''Essential:'' Comprises 90–95% of all hypertension.
* ''Secondary:'' Renovascular, Primary aldosteronism, Cushing’s disease, Pheochromocytoma, Coarctation of the aorta,Primary renal disease, Hyperthyroidism, Hypothyroidism.
* Other diseases can cause a marked elevation in blood pressure; or they may be the consequence of longstanding, poorly controlled hypertension.
# Cerebrovascular accident.
# Subarachnoid hemorrhage.
# Aortic dissection.
# Congestive heart failure/pulmonary edema
# Angina pectoris/myocardial infarction.
* ''Accelerated hypertension:'' Markedly elevated blood pressure with no current life-threatening problem secondary to the hypertension.
* ''Malignant hypertension:'' Usually a markedly elevated blood pressure with an associated serious complications, such as hypertensive encephalopathy, angina pectoris, myocardial infarction, aortic dissection, or cerebrovascular accident; proteinuria, hematuria.
* Vital signs. Take blood pressure in both arms, feel both radial pulses, and check for a radial-femoral pulse lag.
* Eyes. Look for evidence of papilledema, hemorrhages, exudates, severe arteriolar narrowing, and arteriovenous nicking.
* Lungs. Rales may indicate CHF
* Heart. Heart sounds and murmur
* Neurologic exam. Assess the patient’s mental status and look for any focal deficits that may indicate a cerebrovascular accident.
* Confusion and somnolence progressing to coma are hallmarks of hypertensive encephalopathy. Be sure to check reflexes; unilateral hyperreflexia may indicate an intracranial event.
''Definitions:''
* ''HTN'': SBP ≥140 or DBP ≥90
* ''HTN urgency'': SBP ≥180 or DBP ≥110 w/ no acute organ damage
* ''HTN emergency'': Elevated BP w/ acute organ damage (cardiac, CNS, renal)
* In ED pts w/ asymptomatic markedly elevated BP, no labs required urgently
* In those w/ poor f/u check creatinine
* Goal BP <140/90 mmHg; if DM or renal dz goal is <130/80 mmHg
* In pts w/ asymptomatic markedly elevated BP (ie, ≥180/≥110), routine ED medical intervention ''is not required''
* In selected pt populations (ie, those w/ poor f/u), EPs may treat markedly elevated BP in the ED &/or initiate therapy for long-term control
* Start a thiazide-type diuretic for most pts, but may consider ACEI, ARB, BB, CCB, or combination
* HCTZ 12.5–50 mg QD or Chlorthalidone 12.5–25 mg QD
* Asymptomatic pts may be d/c home w/ PCP f/u
* HTN in the ED is often a/w anxiety/pain. Always review BP once pt is calm & pain free
* Tx of pts w/ asymptomatic HTN in the ED is not necessary if outpatient f/u is available
* Malignant hypertension: marked hypertension with retinal hemorrhages, exudates, or papilledema.
* Hypertensive encephalopathy; presence of signs of cerebral edema caused by severe and sudden rises in blood pressure.
* Admit in ICU
* Reduce BP by 25% in 2hrs, near 160/100 in 6hrs
* Reduce DBP by 1/3rd over 12-24 hrs
* Monitor BP q15-30 min
* Too rapid reduction too dangerous
* Sodium nitroprusside drip 0.25-10 mcg/kg/min for 48-72 hrs only.
* Inj Nitroglycerin start at 5 mcg/min; max dose: 100 mcg/min. Mix 1 amp in 50 cc NS start at 0.6 ml/hr.
* Inj Labetalol 10 mg IV bolus, followed by 20-80 mg every 10 min to a total dose of 300 mg. Infusion: 0.5 to 2 mg/min.
* Get CBC, KFT, Urinalysis.
* CXR, ECG, CT head if needed
<div id="notecontent">NICE published guidance in 2010 on the management of hypertension in pregnancy. They also made recommendations on reducing the risk of hypertensive disorders developing in the first place. Women who are at high risk of developing pre-eclampsia should take aspirin 75mg od from 12 weeks until the birth of the baby. High risk groups include:<br><ul><li>hypertensive disease during previous pregnancies</li><li>chronic kidney disease</li><li>autoimmune disorders such as SLE or antiphospholipid syndrome</li><li>type 1 or 2 diabetes mellitus</li></ul><br>The classification of hypertension in pregnancy is complicated and varies. Remember, in normal pregnancy:<br><ul><li>blood pressure usually falls in the first trimester (particularly the diastolic), and continues to fall until 20-24 weeks</li><li>after this time the blood pressure usually increases to pre-pregnancy levels by term</li></ul><br>Hypertension in pregnancy in usually defined as:<br><ul><li>systolic > 140 mmHg or diastolic > 90 mmHg</li><li>or an increase above booking readings of > 30 mmHg systolic or > 15 mmHg diastolic</li></ul><br>After establishing that the patient is hypertensive they should be categorised into one of the following groups<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Pre-existing hypertension</b></th><th><b>Pregnancy-induced hypertension <br>(PIH, also known as gestational hypertension)</b></th><th><b>Pre-eclampsia</b></th></tr></thead><tbody><tr><td>A history of hypertension before pregnancy or an elevated blood pressure > 140/90 mmHg before 20 weeks gestation<br><br>No proteinuria, no oedema <br><br>Occurs in 3-5% of pregnancies and is more common in older women</td><td>Hypertension (as defined above) occurring in the second half of pregnancy (i.e. after 20 weeks)<br><br>No proteinuria, no oedema <br><br>Occurs in around 5-7% of pregnancies<br><br>Resolves following birth (typically after one month). Women with PIH are at increased risk of future pre-eclampsia or hypertension later in life</td><td>Pregnancy-induced hypertension in association with proteinuria (> 0.3g / 24 hours)<br><br>Oedema may occur but is now less commonly used as a criteria<br><br>Occurs in around 5% of pregnancies</td></tr></tbody></table></div></div>
---
*Calcium channel blockers and ACE inhibitors, including ramipril, are teratogenic.
*NICE recommend labetalol as first-line treatment in moderate and severe gestational hypertension rather than methyldopa.
---
<div id="notecontent">The table below shows the Keith-Wagener classification of hypertensive retinopathy<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Stage</b></th><th><b>Features</b></th></tr></thead><tbody><tr><td>I </td><td>Arteriolar narrowing and tortuosity<br>Increased light reflex - silver wiring</td></tr><tr><td>II </td><td>Arteriovenous nipping</td></tr><tr><td>III </td><td>Cotton-wool exudates<br>Flame and blot haemorrhages</td></tr><tr><td>IV </td><td>Papilloedema</td></tr></tbody></table></div></div>
---
>One Tortuous Wire with Two Tips(Nip) on each end
---
The clinical history combined with parathyroid hormone levels will reveal the cause of hypocalcaemia in the majority of cases
;Causes
* vitamin D deficiency (osteomalacia)
* chronic kidney disease
* hypoparathyroidism (e.g. post thyroid/parathyroid surgery)
* pseudohypoparathyroidism (target cells insensitive to PTH)
* rhabdomyolysis (initial stages)
* magnesium deficiency (due to end organ PTH resistance)
* massive blood transfusion
* acute pancreatitis
* ''Primary Hypoparathyroidism'' is hypo functioning gland
* ''Secondary Hypoparathyroidism'' is removal of gland(post thyroid/parathyroid surgery)
Contamination of blood samples with EDTA may also give falsely low calcium levels.
;Management
* acute management of severe hypocalcaemia is with intravenous replacement. The preferred method is with intravenous calcium gluconate, 10ml of 10% solution over 10 minutes
* intravenous calcium chloride is more likely to cause local irritation
* ECG monitoring is recommended
* further management depends on the underlying cause
---
!!!<center>''HYPOCALCEMIA''</center>
<hr>
//A 54-year-old man admitted for an acute myocardial infarction (MI) has a calcium of 7.0//
* Immediate Questions
* Are there any symptoms relevant to the low calcium?
* Asymptomatic hypocalcemia usually does not require emergent treatment.
* Signs and symptoms of hypocalcemia may include peripheral and perioral paresthesias, Trousseau’s and/or Chvostek’s signs, confusion, muscle twitching, laryngospasm, tetany, and seizures.
* Does the low calcium level represent the true ionized calcium?
* Calculate the adjusted total calcium level or order an ionized calcium level.
* Does the patient have a history of neck surgery?
* Surgical removal or infarction of the parathyroid glands is one of the more common causes of hypocalcemia.
* Get KFT, PTH, Vitamin D level, ECG if needed
* Emergency treatment is usually needed for a calcium level below 6.0 mg/dl to prevent fatal laryngospasm. Give 10% calcium gluconate 10–20 mL initially; follow with the infusion.
* Chronic therapy. With primary PTH deficiency the goal is to give 2–4 g of oral calcium daily in four divided doses, adding vitamin D as necessary.
!!!<center>''HYPOGLYCEMIA''</center>
<hr>
//A 33-year-old woman was admitted for diabetic ketoacidosis (DKA) 24 hours ago. The patient’s finger-stick glucose is now 50 mg/dL//
* What are the patient’s vital signs?
* Is the patient symptomatic?
* Early symptoms include headache, hunger, palpitations, tremor, and diaphoresis. As hypoglycemia progresses, abnormal behavior (such as combativeness) and slurred speech mimicking ethanol intoxication is followed by loss of consciousness, seizures, and even death.
* What medications is the patient taking?
* Is there IV access?
* When was the patient’s last meal or snack?
* Insulin overdose?
* Alcoholic?
* Liver disease?CKD? Sepsis?
* Malnutrition/prolonged fasting?
* Get Serum glucose.
* Finger-stick values should always be confirmed by serum glucose measurements because finger-stick glucoses are prone to error secondary to strips that have been exposed to air, inappropriate preparation of the finger with povidoneiodine (Betadine), presence of alcohol on the finger, incorrect timing, or an uncalibrated machine.
* In the presence of symptoms, blood should be obtained immediately, but treatment should not be withheld pending results or because of a delay in obtaining blood.
* Get KFT, LFT, CBC, urinalysis.
* Administer glucose. Do not wait for the results of the serum glucose if you strongly suspect the diagnosis.
* It is best to draw blood before administering glucose; however, you should proceed with treatment if there will be a significant delay before blood can be obtained and the patient is markedly symptomatic.
* If the patient is awake and able and willing to take fluids, glucose should be given orally. Otherwise, administer IV glucose.
* Give 100 ml of 25% dextrose IV push; repeat in 5 minutes if no response.
* Start maintenance IV fluids with D5W at 75–100 mL/hr, especially if the hypoglycemia may recur, such as that resulting from glibenclamide use or sepsis.
* Follow serial glucoses frequently. Depending on the severity of the hypoglycemia, repeat glucose after treatment and again in 1–2 hours according to the results.
Potassium and hydrogen can be thought of as competitors. Hyperkalaemia tends to be associated with acidosis because as potassium levels rise fewer hydrogen ions can enter the cells
Hypokalaemia with alkalosis
* vomiting
* thiazide and loop diuretics
* Cushing's syndrome
* Conn's syndrome (primary hyperaldosteronism)
Hypokalaemia with acidosis
* diarrhoea
* renal tubular acidosis
* acetazolamide
* partially treated diabetic ketoacidosis
Magnesium deficiency may also cause hypokalaemia. In such cases, normalizing the potassium level may be difficult until the magnesium deficiency has been corrected
---
|!Serum Potassium Level|!Severity|!Treatment|
|''2.5''-3.4 mEq/L and asymptomatic |Mild Hypokalemia|ORAL<br>Sando-K 2 tab PO TDS for 2-3 days|
|<2.5 mEq/L or symptomatic |Severe Hypokalemia|IV<br>40 mmol in 1L of NS in no sooner than 4h|
''Causes''
* Drugs
** Loop or Thiazide diuretics
** Beta 2 agonists
** Insulin
** Amphotericin
** Gentamicin
** Corticosteriods
** Theophyllin
** Heparin
* Vomiting
* Diarrhea
* Severe burns
* Low Mg2+
''Symptoms''
* Muscle weakness, constipation, abdominal discomfort, depression, confusion, arrhythmias.
* Exacerbates digoxin toxicity.
* Reduces effectiveness of anti-arrhythmic drugs.
''Emergency Treatment''
* Caution if using K+ supplements in renal impairment or with potassium sparing diuretics/ACEi.
''Intravenous Replacement''
* 80-100 mmol/day
* 0.9% NaCl preferred to 5% glucose.Use ‘ready-made bags’ - always administer via pump.
* 10 mmol/hr – without ECG monitoring
* 20 mmol/hr – with ECG monitoring
* 40 mmol/hr – emergencies only with ECG monitoring
* Maximum concentration peripherally 40 mmol/L
* Exceptionally via large peripheral vein 80 mmol/L (irritant to veins)
* Higher concentrations must always be given centrally.
''Oral Replacement''
* Sando-K (effervescent, 12 mmol/tab) 2 tablets tds for 2-3 days OR
* Kay-Cee-L liquid (1 mmol/ml) 20 ml tds for 2-3 days OR
* Slow-K (Potassium chloride M/R 600 mg containing 8 mmol/tablet) 2 tablets tds/qds for 2-3 days. Only use if intolerant to above oral therapy as Slow-K is known to irritate the stomach
//A 72-year-old woman with hypertension develops profound muscle weakness after 3 days of vomiting and diarrhea. Her serum potassium is 2.5 mEq/L//
* Immediate Questions
* What are the patient’s vital signs?
* Get ECG to R/O arrhythmias
* Diuretics?
* Has the patient had vomiting, diarrhea, nasogastric suction, or excessive sweating?
* Look for distention and the presence of bowel sounds. Ileus secondary to hypokalemia may be present.
* Weakness, blunting of reflexes, paresthesias, and paralysis may be seen.
* Check Mg level, ABG for alkalosis, ECG
* IV KCL if K<3, and inability to take oral replacements (NPO, ileus, nausea, and vomiting).
* Oral replacement. Generally indicated for asymptomatic, mild potassium depletion K>3
* Refractory cases. Rarely, hypokalemia is not correctable because of concomitant hypomagnesemia
* Refer to hypokalemia protocol
{{Hypokalemia/Potassium Replacement Protocol}}
!!! <center>''POTASSIUM REPLACEMENT PROTOCOL – INTRAVENOUS''</center>
* Recommended rate of infusion is 10 mEq/h
* Maximum rate of intravenous replacement is 20 mEq/h with continuous ECG monitoring (the maximum rate may be increased to 40 mEq/h in emergency situations)
* Standard Concentrations: 20 mEq/10 mL
* Maximum Concentration for Central IV administration = 20 mEq/50 mL
* Maximum Concentration for Peripheral IV administration = 10 mEq/50 mL
|!Current Serum Potassium Level|!Central IV Administration|!Peripheral IV Administration|!Monitoring|
|3.6 – 3.9 mEq/L|20 mEq IV over 2 HR x 1|10 mEq IV over 1 HR x 2|No additional action|
|3.4 – 3.5 mEq/L|20 mEq IV over 2 HR x 1 AND<br> 10 mEq IV over 1 HR x 1|10 mEq IV over 1 HR x 3|No additional action|
|3.1 – 3.3 mEq/L|20 mEq IV over 2 HR x 2|10 mEq IV over 1 HR x 4|Recheck serum potassium level 2 hours after infusion complete|
|2.6 – 3 mEq/L|20 mEq IV over 2 HR x 1 AND<br> 10 mEq IV over 1 HR x 1|10 mEq IV over 1 HR x 5|Recheck serum potassium level 2 hours after infusion complete|
|2.3 – 2.5 mEq/L|20 mEq IV over 2 HR x 3|10 mEq IV over 1 HR x 6|Recheck serum potassium level 2 hours after infusion complete|
|< 2.3 mEq/L|Call Physician AND 20 mEq IV over 2 HR x 3|Call Physician AND 10 mEq IV over 1 HR x 6|Recheck serum potassium level 2 hours after infusion complete|
!!! <center>''POTASSIUM REPLACEMENT PROTOCOL – ORAL OR ENTERAL''</center>
* Standard dosage forms: Syr Potklor 20 mEq/15 mL
|!Current Serum Potassium Level|!Total Potassium Replacement|!Monitoring|
|3.7 – 3.9 mEq/L|20 mEq KCl PO/Per feeding tube x 1 dose|No additional action|
|3.5 – 3.6 mEq/L|20 mEq KCl PO/Per feeding tube Q2H x 2 doses|No additional action|
|3.3 – 3.4 mEq/L|20 mEq KCl PO/Per feeding tube Q2H x 3 doses|Recheck serum potassium level 4 hours after last oral dose|
|3.1 – 3.2 mEq/L|20 mEq KCl PO/Per feeding tube Q2H x 4 doses|Recheck serum potassium level 4 hours after last oral dose|
|< 3.1 mEq/L|Call Physician AND 20 mEq KCl PO/Per feeding tube Q2H x 4 doses|Recheck serum potassium level 4 hours after last oral dose|
!!!<center>''HYPOMAGNESEMIA''</center>
<hr>
//A 40-year-old man complaining of chest pain is admitted to rule out myocardial infarction. A magnesium level returns at 0.8 mEq/L (normal: 1.5–2.1 mEq/L)//
* Immediate Questions
* What are the patient’s vital signs?
* Magnesium deficiency is associated with cardiac arrhythmias, including atrial fibrillation, other supraventricular tachycardias, ventricular tachycardia, and ventricular fibrillation.
* Determining that the patient is not in any immediate distress and does not have hypotension or a tachyarrhythmia is essential.
* Is the patient tremulous or currently having a seizure? Tremor, tetany, muscle fasciculations, and seizures all are associated with magnesium deficiency.
* Determining the presence or absence of these neurologic symptoms help to guide the urgency of treatment.
* Potassium depletion often coexists with hypomagnesemia and can cause arrhythmias and muscle weakness, similar to those found in hypomagnesemia.
* Check vitals
* Get ECG, KFT
* The patient who is having neurologic or cardiac manifestations should be treated urgently with parenteral IV therapy.
* Asymptomatic individuals may be treated with oral magnesium, although many clinicians treat magnesium levels < 1.0 mEq/L with parenteral magnesium even though there is not always a good correlation between serum levels and intracellular levels.
* IV magnesium sulfate. Magnesium sulfate 1 g (2 mL of a 50% solution of MgSO4)
* With tetany, status epilepticus, or significant cardiac arrhythmias, then 2 g of magnesium sulfate can be given IV over 10–20 min.
`The length of symptoms, severity and presence of psychotic symptoms (e.g. delusions of grandeur, auditory hallucinations) helps differentiates mania from hypomania`
<div id="notecontent"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Mania</th><th>Hypomania</th></tr></thead><tbody><tr><td><ul><li>Lasts for at least 7 days - Causes severe functional impairment in social and work setting</li><li>May require hospitalization due to risk of harm to self or others</li><li>May present with <b>psychotic symptoms</b></li></ul></td><td><li>A lesser version of mania </li><li>Lasts for < 7 days, typically 3-4 days. Can be high functioning and does not impair functional capacity in social or work setting </li><li>Unlikely to require hospitalization </li><li>Does not exhibit any psychotic symptoms</li></td></tr></tbody></table></div><br>Therefore, the length of symptoms, severity and presence of <span class="concept" data-cid="3248">psychotic symptoms</span> (e.g. delusions of grandeur, auditory hallucinations) helps differentiates mania from hypomania.<br><br>The following symptoms are common to both hypomania and mania<br><br>Mood<br><ul><li>predominately elevated</li><li>irritable</li></ul><br>Speech and thought<br><ul><li>pressured</li><li><span id="concept_popover_id_10024" class="concept concept-0 trigger-link" data-cid="10024" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10024'>You've never been tested on this concept</div><br><div id='div_concept_rating10024' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(132,255,0)'>Importance: <b>74</b></span> </div>" data-original-title="Flight of ideas is characterised by rapid speech with frequent changes in topic based on associations, distractions or word play. Flight of ideas is characteristic of mania">flight of ideas: characterised by rapid speech with frequent changes in topic based on associations, distractions or word play</span></li><li>poor attention</li></ul><br>Behaviour<br><ul><li>insomnia</li><li>loss of inhibitions: sexual promiscuity, overspending, risk-taking</li><li>increased appetite</li></ul></div>
!!Hyponatraemia
may be caused by water excess or sodium depletion. Causes of pseudohyponatraemia include hyperlipidaemia (increase in serum volume) or a taking blood from a drip arm. Urinary sodium and osmolarity levels aid making a diagnosis
;Urinary sodium > 20 mmol/l
* Sodium depletion, renal loss (patient often hypovolaemic)
* diuretics: thiazides, loop diuretics
* AddiSon's disease
* diuretic stage of renal failure
Patient often euvolaemic
* SIADH (urine osmolality > 500 mmol/kg)
* hypothyroidism
;Urinary sodium < 20 mmol/l
* Sodium depletion, extra-renal loss
* diarrhoea, vomiting, sweating
* burns, adenoma of rectum
Water excess (patient often hypervolaemic and oedematous)
* secondary hyperaldosteronism: heart failure, liver cirrhosis
* nephrotic syndrome
* IV dextrose
* psychogenic polydipsia
<center><img src="https://www.dropbox.com/s/l966k0aafwjln6a/hyponatremia.png?raw=1" width="700"></center>
---
!!!<center>''HYPONATREMIA''</center>
---
//A 50-year-old man is admitted for evaluation of a right pulmonary hilar mass. The serum sodium is 118 mmol/L (normal: 136–145 mmol/L)//
* Immediate Questions
* Is the patient symptomatic from the hyponatremia?
* Patients with hyponatremia may be asymptomatic, or they may have central nervous system (CNS) symptoms or signs ranging from lethargy, anorexia, nausea, vomiting, agitation, and headache to marked disorientation, seizures, and death. Muscle cramps, weakness, and fatigue are also common.
* Is this chronic or acute?
* Is there any evidence of volume depletion?
* Does the patient have a history of vomiting or diarrhea? Vomiting and diarrhea can cause wasting of sodium and extracellular fluid, resulting in hyponatremia.
* Is there any history of renal disease, congestive heart failure (CHF), cirrhosis, or nephrotic syndrome? Any of these edematous states suggests an excess of sodium accompanied by an even greater excess of total body water.
* Is there any history of hypothyroidism or adrenal insufficiency? Hypothyroidism and hypoadrenalism cause renal wasting of sodium, even in the face of hyponatremia.
* Is the patient taking any medications that could cause the hyponatremia? Diuretics, (NSAIDs), haloperidol, TCAs, SSRIs, ACE inhibitors, carbamazepine, Mannitol
* Is there any pulmonary disease? Pneumonia, tuberculosis, lung carcinoma, and other pulmonary pathology may cause (SIADH).
* Is there any CNS disease? Meningitis, encephalitis, brain abscess, tumors, trauma, and a variety of other diseases can cause SIADH.
* Is there a history of weight loss, cough, and hemoptysis? SIADH associated with bronchogenic carcinoma
* Is there any history of hyperlipidemia or hyperproteinemia?
* Is there a history of diabetes? A markedly elevated glucose can lower the serum sodium.
* Is the lab value correct? If the sodium level is unexpected, repeat the test.
* True hyponatremia may be classified according to the volume status of the patient: hypovolemic, euvolemic, or hypervolemic
* For every increase in triglycerides of 1 g/dL, sodium falsely decreases by 1.7 mmol/L.
* A 1 g/dL increase in protein falsely lowers the sodium by 1+ mmol/L
* Acute & chronic renal failure:BUN/Cr <20, Urine Na+ >20, FENa+ >1
* Evaluate for orthostatic blood pressure and heart rate changes.
* Get KFT, Spot urine electrolytes and creatinine. Obtain before any diuretic treatment, Urine and serum osmolality, LFT, TSH, CXR, CT head if needed,
!!Approach to Hyponatremia
* ''Hypovolemic'':
* Extrarenal:Vomiting, Diarrhea, Burns, Pancreatits; BUN/Cr >20, Urine Na <20, FENa+ <1
* Renal: Diuretics, Addison’s, Salt waste neph, RTA; BUN/Cr >20, Urine Na >20, FENa >1
* Give NS IV, also correct K
* ''Euvolemic (no edema):'' SIADH, Hypothyroidism, Pain, Pain meds, carbamazepine, HCTZ etc); BUN/Cr ≤20, Urine Na+ >20, FENa+ > 1
* Restrict patient’s water intake to 800–1000 mL/d
* Demeclocycline 300-600 mg bd for chr SIADH
* ''Hypervolemic'': Cirrhosis, Nephrosis, CHF, Severe bilat RAS, GN; BUN/Cr >20, Urine Na+ <20, FENa+ <1
* Restrict IV and oral fluids.
# CHF: Digoxin, diuretics (eg, furosemide), ACE inhibitors, and sodium restriction.
# Nephrotic syndrome: Steroids, restrict sodium and water intake, and increase patient’s protein intake. Furosemide is commonly used.
# Cirrhosis: Restriction of sodium and water, and diuretics. Spironolactone + Furosemide
# Renal failure: Sodium and water restriction, loop diuretics, and dialysis, if indicated.
<div class="figure"><div class="ttl">A practical approach for determining the cause of hyponatremia</div><div class="cntnt">
<img src="https://www.dropbox.com/s/2ui7ovqyba0dbt7/Apprdetermincausehypntrm.gif?raw=1">
</div><div class="graphic_footnotes">IVIG: intravenous immune globulin; TURP: transurethral resection of the prostate; BP: blood pressure; ACTH: adrenocorticotropic hormone; ADH: antidiuretic hormone; TSH: thyroid-stimulating hormone; SIADH: syndrome of inappropriate antidiuretic hormone secretion.<br>* A simple and convenient correction of the serum sodium for hyperglycemia is as follows: Add 2 mEq/L to the serum sodium for every 100 mg/dL of serum glucose above the normal value.<br>¶ Impaired water excretion in renal failure occurs if there is severe impairment in glomerular filtration rate. Patients with mild-to-moderate impairment in glomerular filtration rate are typically able to excrete water loads. The measured plasma osmolality may be high in patients with renal failure because of high urea concentrations. However, urea is an ineffective osmole, and such patients have hypotonic hyponatremia even if the plasma osmolality is normal.<br>Δ Thiazide-induced hyponatremia may be protracted. An extensive evaluation for other etiologies can be delayed for several weeks in mildly hyponatremic patients.<br><font class="lozenge">◊</font> If the serum sodium is 125 mEq/L or less, we do not give isotonic saline. In such patients, the evaluation can be delayed until the sodium is slowly raised to higher levels.<br>§ Although patients with hyponatremia due to heart failure or cirrhosis will usually have edema that is clinically apparent, hypovolemia may not always be apparent by clinical exam. Thus, in a patient who appears to be euvolemic but whose urine chemistries are consistent with hypovolemia, infusion of isotonic saline (eg, 1 liter over one hour) can be helpful.</div><div id="graphicVersion">Graphic 101823 Version 4.0</div></div>
!!! <center>''HYPONATREMIA PROTOCOL''</center>
@@display:block;text-align:center;[img[hyponatremia.png]]@@
''Treatment''
* Asymptomatic hyponatremia: correct [Na] at rate of 0.5 mEq/L/h
* Symptomatic hyponatremia: initial rapid correction of Na (2 mEq/L/h for the first
* 2–3 h) until sx resolve
* Rate of increase of Na should not exceed 10–12 mEq/L/d to avoid osmotic demyelination syndrome (spastic quadriplegia, dysarthria, dysphagia), espec if hypoNa chronic
* 1 L 3% NS given to 70-kg man with [Na] of 110 mEq/L will increase [Na] by 9.4 mEq
* ''Hypovolemic hyponatremia:'' volume repletion with normal saline
* ''SIADH:'' free water restrict + treat underlying cause
* 3% NS + loop diuretic if sx or Na fails to c w/ free H2O restriction
* 1 L 3% NS will raise [Na] by 10 mEq
* 50 mL/h will increase [Na] by 0.5 mEq/L/h; 100–200 mL/h will increase [Na] by 1–2 mEq/L/h; formula only provides estimate; ∴ recheck serum Na frequently
* Salt tabs: particularly if chronic and no CHF
* Tab Tolvaptan (oral V2 antag); used for symptomatic SIADH resistant to above Rx
* ''Hypervolemic hyponatremia:'' free water restrict
* mobilize excess Na & H2O (loop diuretics) & (vasodilators to c CO in CHF, colloid infusion in cirrhosis)
* Tolvaptan in symptomatic hyponatremia resistant to above Rx, monitor for overcorrection
<hr>
* Hyponatremia represents a relative excess of water in relation to sodium.
* It can be induced by a marked increase in water intake (primary polydipsia) and/or by impaired water excretion resulting from advanced renal failure or from persistent release of antidiuretic hormone (ADH)
* Acute – If the hyponatremia has developed over a period of less than 48 hours, it is called "acute."
* Acute hyponatremia usually results from parenteral fluid administration in postoperative patients (who have ADH hypersecretion associated with surgery) and from self-induced water intoxication (as in, for example, competitive runners, psychotic patients with extreme polydipsia).
* Chronic – If it is known that hyponatremia has been present for more than 48 hours, or if the duration is unclear (such as in patients who develop hyponatremia at home), it is called "chronic."
* Severe hyponatremia – <120 mEq/L
* Moderate hyponatremia – 120 to 129 mEq/L
* Mild hyponatremia – 130 to 134 mEq/L
* Severe symptoms – Severe symptoms of hyponatremia include seizures, obtundation, coma, and respiratory arrest.
* Mild to moderate symptoms – headache, fatigue, lethargy, nausea, vomiting, dizziness, gait disturbances, forgetfulness, confusion, and muscle cramps.
* Goal of initial therapy is to raise the serum sodium concentration by 4 to 6 mEq/L in a 24-hour period.
* Acute hyponatremia and a serum sodium <130 mEq/L
* Asymptomatic patients: 50 mL bolus of 3 % NS STAT and rechek Na
* Symptomatic pts: symptoms that might be due to increased intracranial pressure (seizures, obtundation, coma, respiratory arrest, headache, nausea, vomiting, tremors, gait or movement disturbances, or confusion): 100 mL bolus of 3 percent saline, followed, if symptoms persist, with up to two additional 100 mL doses (to a total dose of 300 mL) over the course of 30 minutes.
* Chronic hyponatremia – and a serum sodium <130 mEq/L
* In asymptomatic patients: no hypertonic saline. Identify and discontinue drugs that could be contributing to hyponatremia; identify and, if possible, reverse the cause of hyponatremia; and limit further intake of water [eg, fluid restriction, discontinue hypotonic intravenous infusions]).
* In patients with mild to moderate symptoms (eg, headache, fatigue, nausea, vomiting, gait disturbances, confusion) and known intracranial pathology, we treat with a 100 mL bolus of 3 percent saline, followed, if symptoms persist, with up to two additional 100 mL doses (to a total dose of 300 mL) over the course of 30 minutes.
* In chronically hyponatremic patients with mild or moderate symptoms who do not have intracranial pathology, the approach depends on the severity of hyponatremia:
* If the patient has severe hyponatremia (serum sodium <120 mEq/L), we initiate intravenous 3 percent saline at a rate of 15 to 30 mL/hour.
* Subsequent treatment
* Hypertonic saline should be discontinued once the daily correction goal of 4 to 6 mEq/L has been achieved.
* Fluid restriction to below the level of urine output is indicated for the treatment of symptomatic or severe hyponatremia in edematous states (such as heart failure and cirrhosis), syndrome of inappropriate ADH (SIADH), advanced renal impairment, and primary polydipsia.
* In general, fluid intake should be less than 800 mL/day.
* Depending upon the etiology of hyponatremia, other therapies may include loop diuretics, oral salt tablets, urea, potassium supplementation, or vasopressin receptor antagonists.
* SIADH pts who have very mild or absent symptoms and a serum sodium above 120 mEq/L can be treated with oral salt tablets in addition to fluid restriction.
* Potassium replacement in hypokalemic patients
* Start Tolvaptan 15 mg OD
* sertraline, selective serotonin reuptake inhibitor (SSRI) antidepressants
* tricyclic antidepressants
* lithium
* carbamazepine
* haloperidol
* fluphenazine.
* chlorpropramide
* MDMA/ecstasy
* tramadol
* vincristine
* desmopressin
!!!<center>''HYPOPHOSPHATEMIA''</center>
<hr>
//A 26-year-old male with type 1 diabetes was admitted 6 hours ago for treatment of diabetic ketoacidosis (DKA) and now has a serum phosphate level of 1.0 mg/dL//
* Are there any symptoms related to the low phosphate? Serum phosphate levels below 1.0 mg/dL require prompt treatment regardless of symptoms.
* Above that level, check for symptoms related to low phosphate, such as numbness or tingling, muscle weakness, anorexia, confusion, irritability, seizures, and skeletal pain. Muscle weakness, mental status changes, and hematologic abnormalities are common findings.
* What treatment is the patient receiving? Correction of DKA, or refeeding of malnourished or alcoholic patients, Antacids
* Does the patient consume alcohol?
* Check KFT with bicarb, Calcium, magnesium, and glucose levels. LFT, CBC, CXR, ECG
* If the phosphate level is < 1.0 mg/dL, start IV replacement therapy immediately.
* If the level is 1.0–1.5 mg/dL and the patient is symptomatic, start IV replacement therapy. Otherwise, oral treatment is usually sufficient.
<div id="notecontent">Hypospadias is a congenital abnormality of the penis which occurs in approximately 3/1,000 male infants<br><br>Hypospadias is characterised by<br><ul><li>a ventral urethral meatus</li><li>a hooded prepuce</li><li>chordee (ventral curvature of the penis) in more severe forms</li><li>the urethral meatus may open more proximally in the more severe variants. However, 75% of the openings are distally located.</li></ul><br>Hypospadias most commonly occurs as an isolated disorder. Associated urological abnormalities may be seen in up to 40% of infants, of these cryptorchidism is the most frequent (10%).<br><br>Corrective surgery is performed before 2 years of age. It is essential that the child is not circumcised prior to the surgery as the foreskin may be used in the corrective procedure. In boys with very distal disease no treatment may be needed.</div>
!!!<center>''HYPOTENSION (SHOCK)''</center>
<hr>
//A 75-year-old woman presents with confusion, nausea, abdominal pain, and weakness. Her BP is 70/50 mm Hg//
* Immediate Questions
* What are all of the patient’s vital signs?
* Confirm the blood pressure in both arms manually.
* Fever suggests sepsis, but hypothermia can also be seen in sepsis, myxedema, and addisonian crisis.
* Tachypnea may be seen in cardiogenic shock, pulmonary embolus (PE), and sepsis.
* What is the patient’s mental status? Confusion or altered mental staus may be an indicator of inadequate perfusion of vital organs.
* What are the patient’s usual medications and when were they last taken?
* Are there any accompanying symptoms?
* A history of bleeding, vomiting, diarrhea, polyuria, polydipsia, dysuria, cough, chest pain, or abdominal pain may suggest the underlying cause of hypotension.
* Chest discomfort and dyspnea suggest PE or myocardial ischemia/infarction. Dyspnea may be the only symptom of cardiac ischemia/infarction, especially in the elderly.
* ''The following are subcategories of shock''
# ''Hypovolemic''
## ''Hemorrhagic'': Traumatic, Postoperative or postprocedural, Gastrointestinal (GI) bleeding, ruptured, aneurysm, ruptured ovarian cyst, or ectopic pregnancy.
## ''Fluid losses:'' Severe vomiting, diarrhea, perspiration, extensive burns, diuresis, and “third-space losses” (peritonitis or pancreatitis)
# ''Vasogenic''. sepsis, anaphylaxis, adrenal insufficiency, acidosis, central nervous system injury, or medications
# ''Cardiogenic''. Acute cardiac failure most commonly occurs as a result of acute myocardial infarction (MI) or profound ischemia, and it may occur with decompensated congestive heart failure (CHF).
# ''Neurogenic''. An increase in vagal stimulation from a variety of causes, including spinal cord injury and pain can result in inapproriate bradycardia and vasodilation.
* Wheezing or stridor may indicate anaphylaxis or COPD exacerbation
* Rales and wheezes can occur with cardiac failure or pneumonia.
* Abdomen. Rebound tenderness or positive Murphy’s sign and absence of bowel sounds suggest sepsis from an abdominal source.
* Absent bowel sounds and tenderness may be present with a large GI bleed.
* Rectum. Hematochezia or occult blood indicates GI blood loss.
* Female genitalia. A gynecologic exam in women of childbearing age is mandatory to rule out a ruptured ectopic pregnancy or pelvic infection.
* Extremities. Instability of pelvis or femurs suggests a fracture, which can result in significant bleeding into either the pelvis or the thigh.
* Altered mental status may indicate inadequate cerebral hypoperfusion as well as suggest possible causes (cerebrovascular accident).
* Get CBC, KFT, Bicarb, PT/INR,ABG, Trop-T if suspecting MI, ECG, Type and cross-match, Pregnancy test, Blood, sputum, urine, and other cultures if sepsis is suspected, Nasogastric (NG) aspirate to assess for upper GI bleeding
* CXR, ECG, ECHO
<hr>
<center>''Emergency management''</center>
<hr>
# Direct pressure if external hemorrhage
# 14/16 G peripheral IV lines or a central line
# Trendelenburg position
# Insert Foley catheter to monitor urinary output.
# Oxygen and ventilatory support as needed.
# Severe metabolic acidosis (pH < 7.10) should be corrected.
<hr>
<center>''Hypovolemic Shock''</center>
<hr>
* NS or RL IV bolus
* PRBC if HCT < 30%,
* Give IV fluid bolus of 250–500 mL followed by either a second fluid bolus or maintenance IV fluids at 200–250 mL/hr.
* Use vasopressor agents such as norepinephrine and dopamine if hypotension persists.
* Neurogenic shock: moderate IV fluid administration, avoid volume overload. Low-dose vasopressors may be necessary.
* ''Septic shock:'' start protocol
* ''Anaphylactic shock:'' refer to [[topic|Anaphylaxis]]
* ''Cardiogenic shock:'' start protocol
Drugs Causing Hypotension
* [[Verapamil|CCB]]
* [[Diltiazem|CCB]]
* [[Levodopa|ParKinsonsMx]]
* [[BromoCriptine|ParKinsonsMx]]
* [[ISMN]]
ECG Changes
*J waves
*QT prolongation
!!!<center>''HYPOTHERMIA''</center>
<hr>
* You are called to the emergency room to see a patient with a temperature of 32.0 °C (89.6 °F).
* Immediate Questions
* Does the patient have any possible source of infection?
* Look for evidence of pneumonia, urinary tract infection, or any other cause of bacteremia.
* Is there a history of other medical problems? Hypothyroidism, hypoglycemia, hypopituitarism, and hypoadrenalism all may present with hypothermia.
* What is the clinical setting? Does the patient have a history of exposure to cold weather or inadequate heating or clothing?
* Hypoglycemia.
* Adrenal insufficiency. H/O steroid ingestion.
* Uremia. Check KFT
* Cerebrovascular accident. Get CT head
* Head trauma?
* Spinal cord transection. Paraplegia or quadriplegia on examination?
* Poisoning?
* Get remaining vitals
* Look for signs of head trauma. Check pupil reactivity; pupils are often sluggish and react slowly to light.
* Get CBC, PT/INR, KFT, RBS, TSH, ABG, Blood cultures, CXR, ECG
* For moderate/severe hypothermia (< 32 °C), admit to ICU. Make sure the patient is hemodynamically stable.
* If ventricular fibrillation occurs, cardiopulmonary resuscitation should be instituted and continued until the core temperature rises this clinical setting, the statement “A patient is not dead until they are warm and dead” applies.
* If you suspect hypothermia secondary to environmental exposure, place an IV line to replace fluids because chronic hypothermia leads to volume depletion. The IV fluids can be warmed to 43 °C (109.4 °F).
* Give IV steroids if you suspect Addison’s disease or IV thyroxine if you suspect possible myxedema coma.
* In cases of environmental exposure, remove the patient from the cold environment and use blankets.
The most common cause of hypothyroidism in children (juvenile hypothyroidism) is autoimmune thyroiditis.
Other causes include
* post total-body irradiation (e.g. in a child previous treated for acute lymphoblastic leukaemia)
* iodine deficiency (the most common cause in the developing world)
<div id="notecontent">Hypothyroidism affects around 1-2% of women in the UK and is around 5-10 times more common in females than males.<br><br><b>Primary hypothyroidism</b><br><br>Hashimoto's thyroiditis <br><ul><li>most common cause</li><li>autoimmune disease, associated with IDDM, Addison's or pernicious anaemia</li><li>may cause transient thyrotoxicosis in the acute phase</li><li>5-10 times more common in women</li></ul><br>Subacute thyroiditis (de Quervain's)<br><br>Riedel thyroiditis<br><br>After thyroidectomy or radioiodine treatment<br><br>Drug therapy (e.g. lithium, amiodarone or anti-thyroid drugs such as carbimazole)<br><br>Dietary iodine deficiency<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Venn diagram showing how different causes of thyroid dysfunction may manifest. Note how many causes of hypothyroidism may have an initial thyrotoxic phase.</div><br><b>Secondary hypothyroidism (rare)</b><br><br>From pituitary failure<br><br>Other associated conditions<br><ul><li>Down's syndrome</li><li>Turner's syndrome</li><li>coeliac disease</li></ul></div>
<div id="notecontent">Key points<br><ul><li>initial starting dose of levothyroxine should be lower in elderly patients and those with ischaemic heart disease. The BNF recommends that for patients with cardiac disease, severe hypothyroidism or patients over 50 years the initial starting dose should be 25mcg od with dose slowly titrated. Other patients should be started on a dose of 50-100mcg od</li><li>following a change in thyroxine dose thyroid function tests should be checked after 8-12 weeks</li><li>the therapeutic goal is 'normalisation' of the thyroid stimulating hormone (TSH) level. As the majority of unaffected people have a TSH value 0.5-2.5 mU/l it is now thought preferable to aim for a TSH in this range</li><li>women with established hypothyroidism who become pregnant should have their dose increased 'by at least 25-50 micrograms levothyroxine'* due to the increased demands of pregnancy. The TSH should be monitored carefully, aiming for a low-normal value</li><li>there is no evidence to support combination therapy with levothyroxine and liothyronine</li></ul><br>Side-effects of thyroxine therapy<br><ul><li>hyperthyroidism: due to over treatment</li><li><span class="concept" data-cid="3424">reduced bone mineral density</span></li><li>worsening of angina</li><li>atrial fibrillation</li></ul><br>Interactions<br><ul><li><span id="concept_popover_id_10457" class="concept concept-0 trigger-link" data-cid="10457" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10457'>You've never been tested on this concept</div><br><div id='div_concept_rating10457' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(50,255,0)'>Importance: <b>90</b></span> </div>" data-original-title="Iron / calcium carbonate tablets can reduce the absorption of levothyroxine - should be given 4 hours apart">iron, calcium carbonate</span><ul><li><span id="concept_popover_id_10457" class="concept concept-0 trigger-link" data-cid="10457" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10457'>You've never been tested on this concept</div><br><div id='div_concept_rating10457' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(50,255,0)'>Importance: <b>90</b></span> </div>" data-original-title="Iron / calcium carbonate tablets can reduce the absorption of levothyroxine - should be given 4 hours apart">absorption of levothyroxine reduced, give at least 4 hours apart</span></li></ul></li></ul><br>*source: NICE Clinical Knowledge Summaries</div>
* Hypotonia, or floppiness, may be central in origin or related to nerve and muscle problems. An acutely ill child (e.g. septicaemic) may be hypotonic on examination.
* Hypotonia associated with encephalopathy in the newborn period is most likely caused by hypoxic ischaemic encephalopathy
;Central causes
* Down's syndrome
* Prader-Willi syndrome
* hypothyroidism
* cerebral palsy (hypotonia may precede the development of spasticity)
;Neurological and muscular problems
* spinal muscular atrophy
* spina bifida
* Guillain-Barre syndrome
* myasthenia gravis
* muscular dystrophy
* myotonic dystrophy
The two main types of inflammatory bowel disease are Crohn's disease and ulcerative colitis. They have many similarities in terms of presenting symptoms, investigation findings and management options.
<center>
<img width=500 src="https://www.dropbox.com/s/olxy7wpcm46j9s3/ibd.png?raw=1">
</center>
Venn diagram showing shared features and differences between ulcerative colitis and Crohn's disease. Note that whilst some features are present in both, some are much more common in one of the conditions, for example colorectal cancer in ulcerative colitis
There are however some key differences which are highlighted in table below:
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Crohn's disease (CD)</b></th><th><b>Ulcerative colitis (UC)</b></th></tr></thead><tbody><tr><td><b>Features</b></td><td>Diarrhoea usually non-bloody <br><span class="concept" data-cid="6204">Weight loss</span> more prominent <br>Upper gastrointestinal symptoms, <span class="concept" data-cid="6205">mouth ulcers</span>, <span class="concept" data-cid="6206">perianal disease</span><br>Abdominal mass palpable in the right iliac fossa</td><td><span class="concept" data-cid="6196">Bloody diarrhoea</span> more common<br>Abdominal pain in the left lower quadrant<br><span class="concept" data-cid="6197">Tenesmus</span></td></tr><tr><td><b>Extra-intestinal</b></td><td><span class="concept" data-cid="6217">Gallstones</span> are more common secondary to reduced bile acid reabsorption <br><br><span class="concept" data-cid="6218">Oxalate renal stones</span>*</td><td><span class="concept" data-cid="6193">Primary sclerosing cholangitis</span> more common</td></tr><tr><td><b>Complications</b></td><td><span class="concept" data-cid="6207">Obstruction</span>, <span class="concept" data-cid="6208">fistula</span>, colorectal cancer</td><td>Risk of colorectal cancer high in UC than CD</td></tr><tr><td><b>Pathology</b></td><td><span class="concept" data-cid="6209">Lesions may be seen anywhere from the mouth to anus</span><br><br>Skip lesions may be present</td><td><span class="concept" data-cid="6195">Inflammation always starts at rectum and never spreads beyond ileocaecal valve</span><br><br><span class="concept" data-cid="6198">Continuous disease</span></td></tr><tr><td><b>Histology</b></td><td><span class="concept" data-cid="6211">Inflammation in all layers from mucosa to serosa</span><br><ul><li><span class="concept" data-cid="6213">increased goblet cells</span></li><li><span class="concept" data-cid="6212">granulomas</span></li></ul></td><td><span class="concept" data-cid="6199">No inflammation beyond submucosa</span> (unless fulminant disease) - inflammatory cell infiltrate in lamina propria<br><ul><li>neutrophils migrate through the walls of glands to form <span class="concept" data-cid="6200">crypt abscesses</span></li><li><span class="concept" data-cid="6201">depletion of goblet cells</span> and mucin from gland epithelium</li><li>granulomas are infrequent</li></ul></td></tr><tr><td><b>Endoscopy</b></td><td>Deep ulcers, <span class="concept" data-cid="6210">skip lesions</span> - <span class="concept" data-cid="6214">'cobble-stone' appearance</span></td><td>Widespread ulceration with preservation of adjacent mucosa which has the appearance of polyps ('<span class="concept" data-cid="6202">pseudopolyps</span>')</td></tr><tr><td><b>Radiology</b></td><td>Small bowel enema<br><ul><li>high sensitivity and specificity for examination of the terminal ileum</li><li>strictures: '<span class="concept" data-cid="6215">Kantor's string sign</span>'</li><li>proximal bowel dilation</li><li><span class="concept" data-cid="6216">'rose thorn' ulcers</span></li><li>fistulae</li></ul></td><td>Barium enema<br><ul><li><span class="concept" data-cid="6203">loss of haustrations</span></li><li><span class="concept" data-cid="6202">superficial ulceration, 'pseudopolyps'</span></li><li>long standing disease: <span class="concept" data-cid="4193">colon is narrow and short -'drainpipe colon'</span></li></ul></td></tr></tbody></table>
*impaired bile acid rebsorption increases the loss calcium in the bile. Calcium normally binds oxalate.
---
>Crohn's - GD
*''G''ranulomas - ''G''oblet cells - ''G''all stones(& Renal stones) - ''D''eep inflammation involving all the layers - ''D''eep linear ulcers(rose thorn)
>KANTA - THORN
*KANTOR's sign - Rose THORN sign - Crohn's
---
>ULCERATIVE colitis - pyoderma gangrenosum(red lesion with central ULCERation)
---
>Granulomata and Non-Glandular inflammation in Crohn's
>Glandular inflammation in Ulcerative Colitis
---
!!Irritable Bowel Syndrome
NICE published clinical guidelines on the diagnosis and management of irritable bowel syndrome (IBS) in 2008
The diagnosis of IBS should be considered if the patient has had the following for at least 6 months:
* abdominal pain, and/or
* bloating, and/or
* change in bowel habit
A positive diagnosis of IBS should be made if the patient has abdominal pain relieved by defecation or associated with altered bowel frequency stool form, in addition to 2 of the following 4 symptoms:
* altered stool passage (straining, urgency, incomplete evacuation)
* abdominal bloating (more common in women than men), distension, tension or hardness
* symptoms made worse by eating
* passage of mucus
Features such as lethargy, nausea, backache and bladder symptoms may also support the diagnosis
Red flag features should be enquired about:
* rectal bleeding
* unexplained/unintentional weight loss
* family history of bowel or ovarian cancer
* onset after 60 years of age
Suggested primary care investigations are:
* full blood count
* ESR/CRP
* coeliac disease screen (tissue transglutaminase antibodies)
;Treatment
* Firstline is Antispasmodics like Mebeverine acutely, Peppermint oil
* Constipation predominant: Bulkforming laxative, Macrogols(Movicol) or Stimulatn laxatives. Lactulose is discouraged in IBS
* Diarrhea predominant: Loperamide, Codeine
* TCAs like Amitriptyline as second line if the above drugs doesn't work in chronic management
| !IRRITABLE BOWEL SYNDROME DRUGS |<|
|''Advice: '' <br>• Eat small portions frequently and at leisure. <br>• Avoid heavy meals and hurried meals.<br>• Avoid cold water, cold drinks, Icecerams <br>• Take rice, rice products(idli), jowar roti, corn flakes, barley, white bread, potato, sweet potato, beet, carrot, pumpkin, mushroom; banana, papaya, pine apple. <br>• Cook with min oil.<br>• ''Take in small quantity:'' chapati, cereal, beans, seeds, lentils; cabbage, cauliflower, sprouts, peas, tomato, cucumber; pine apple, citrus fruits, grapes, raisins, cherries.<br>• Avoid Mild and dairy products, coconut, fried foods (pakodas, namkins, french fries), spicy foods, oil, butter, solid chocolates, egg yolk, red meat, coffee, soft drinks, alcohol.|
|Chlordiazepoxide+<br>Clidinium+<br>Dicyclomine|Tab Normaxin 1 tab TDS, before meals or food and at bedtime, 1 wk|
|Loperamide|Tab Lopamide 1 tab OD, 7 days|
|Dicyclomine|Tab Cyclopam 20 TDS, 7 ds|
|Dicyclomine+<br>PCM+<br>Mefena|Tab Cyclopam Plus TDS, 7 ds|
|Fenoverine|Tab Spasmopriv 100 mg TDS, 1 wk|
|Mebevarine|Tab Colospa 100 mg TDS, 1 wk|
|Calcium|Tab Shelcal 500 OD, 2 wks|
|Imipramine|Tab Imipramine 75 mg OD, 2 wks|
|Amitriptyline|Tab Tryptomer 25 mg, 1 tab, BD. 2 wks|
|Amitriptyline+<br>Chlordiazepoxide|Tab Amixide 5 mg BD, 2 wks|
|Escitalopram|Tab Stalopam 10 mg OD for 1 wk then 20 mg OD for 3 wks|
|Fluoxetine|Tab Prodep 20 mg OD, 1 month|
|Rifaximin|Tab Rifagut 550 mg TDS, 14 days|
|Probiotic|Sach Econorm 1 sach OD, 10 days|
| !IBS WITH CONSTIPATION |<|
|Isabghula|Pow Isabgol 2 tsp in 100 ml water HS, 1 wk|
|Mg(OH),,2,,|Syr Cremaffin 30-60 mL/day once daily at bedtime|
|Psyllium|Pow Softovac 1-2 tsp with water BD, 1 wk|
|Senna|Tab Senasof 15 mg HS 7 days|
|Senna+<br>Karaya gum|Pow Evacuol 1 tsp BD, 7 days|
|Lubiprostone|Tab Lubiprostone 8 mcg BD, with food and water|
!!Drugs Causing Intracranial hypertension
* LiThium
* CorticoSteroids
* IsoTretinoin
* TetraCyclines
---
>LIST of Intracranial hypertension Drugs
*Lithium-Isotretinoin-Steroid-Tetracyclines
| !ICU DAILY ASSESSMENT |
| NEUROLOGICAL |
|A&Ox3(Y/N); <br>Pupils: 4 mm PERRLA; <br>[[GCS]]:15 ; <br>Intubated Y/N; <br>Sedation: Nil; <br>Analgesia: Nil; <br>Limb Strength: 5/5;<br>Restraints: Y/N; <br>CT: done/not done; <br>Diagnosis:?|
| RESPIRATORY |
|RR range: 15-20; <br>SpO,,2,, range: 98-99; on RA; O2 Mask/NC:@ 2 Lt; <br>BIPAP: 12/6<br>If intubated: ETT # 7.5 @ 22cm @ lip; <br>Secretions: nil; <br>''Morning ABG:'' pH/pCO,,2,,/pO,,2,,/HCO,,3,,/base excess/O,,2,, sat;<br>''Vent Settings: ''<br>Mode: SIMV<br>FiO2: 60%<br>TV: 400<br>Rate: 15 <br>Cuff Pressure: checked Y/N; <br>Cough:Y/N<br>Chest Expansion: Good ;<br>Auscultation: Clear, no use of acessory muscles, no crackles or wheezes.<br>Chest tube: in place, no issues. Imaging: CXR: wnl, <br>CT: wnl <br>Diagnosis:?|
| CARDIOVASCULAR |
|HR range: 60-90 <br>Rhythm: Regular; <br>BP range: 100-120/60-80; <br>MAP: >65<br>ECG: STEMI/wnl; <br>Recent echo: EF 55%, good LV function<br>Pressors: on Norad/Dopamine; <br>BP meds: amlodipine, arkamin<br>Diagnosis:?|
| GASTROINTESTINAL |
|Abdomen - Normal bowel sounds, abdomen soft and nontender, BS present no organomegaly; <br>Last BM: Yesterday<br>Feeds:NG/PO/TPN/NPO/none; <br>Diet: Regular; <br>NoDiarrhea/vomiting/Residuals on tube feeds <br>Labs: LFT: wnl, amylase, lipase wnl; <br>USG/CT abdomen/pelvis/AbdXray: wnl; Diagnosis:?|
| ENDOCRINE |
|Blood glucose levels: 150-200; <br>Insulin drip rate: 2 ml/hr ; <br>Sliding scale insulin: Y/N; <br>SC insulin: Mixtard 30/70 15 U---10 U;<br>''Oral hypoglycemic:'' <br>Gluconorm G1; <br>TSH: wnl; <br>FEN/Renal: <br>24 hour I= /O= /Bal: ;<br>Urea, Cr, Electrolytes: wnl; <br>USG/CT: wnl; <br>IVF: NS @ 75 ml/hr; <br>Diuretic therapy Y/N, <br>electrolyte imbalance correction: nil <br>Foley Catheter Y/N. <br>Date Placed: ; <br>Adjust dosing in renal failure, <br>Remove Foley: Y/N|
| INTEGUMENT/MUSCULOSKELETAL/MOBILITY |
|Rashes/Scars/Lumps: nil; <br>Skin Break Down: nil; <br>Pressure ulcer(s) present, location: nil; <br>Rx: Mobility Status: walk without support; <br>Activity:|
| INFECTIOUS DISEASES |
|Max temp over last 24 hrs: Current temp: ; <br>Labs: TLC: <br>Blood cultures -ve, urine -ve; <br>Antibiotics: Monocef day 1 of /total 7 days Exam (extremities concerning for DVT, sites concerning for infection): wnl|
| HEMATOLOGY |
|No bruising, oozing, petechiae, etc.; <br>Labs: Hb/Hct/Plt/PT/INR/PTT|
| ACCESS |
|Central: IJ placed on ; <br>PIV- L/R; days in‐situ, <br>skin site condition: wnl <br>Should any lines be removed today?|
| ULCER PROPHYLAXIS |
|Pan 40; <br>DVT prophylaxis: Heparin/Compression boots|
| PSYCHIATRIC |
|any issues Rehab Plan/Social issues/ Patient/Family Education Issues: nil Has the family been updated?|
|FAST HUGS|
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Infusions"/>INFUSIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="AdenoSine"/>Adenosine</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Alteplase"/>Alteplase</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="AmioDarone"/>Amiodarone</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Atropine"/>Atropine</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Diltiazem"/>Diltiazem</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Dobutamine"/>Dobutamine</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Dopamine"/>Dopamine</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Epinephrine"/>Epinephrine/Adrenaline</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Isoproterenol"/>Isoproterenol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Ketamine"/>Ketamine</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Lorazepam"/>Lorazepam</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Midazolam"/>Midazolam</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Nitroglycerine"/>Nitroglycerine</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Nitroprusside"/>Nitroprusside</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Noradrenaline"/>Noradrenaline</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Propofol"/>Propofol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Vecuronium"/>Vecuronium</$button></center>
!!Intra Cranial Venous Thrombosis
<div id="body_content">
Overview<br><ul><li>can cause cerebral infarction, much lesson common than arterial causes</li><li>50% of patients have isolated sagittal sinus thromboses - the remainder have coexistent lateral sinus thromboses and cavernous sinus thromboses</li></ul><br>Features<br><ul><li>headache (may be sudden onset)</li><li>nausea & vomiting</li></ul><br>Sagittal sinus thrombosis<br><ul><li>may present with seizures and hemiplegia</li><li>parasagittal biparietal or bifrontal haemorrhagic infarctions are sometimes seen</li></ul><br>Cavernous sinus thrombosis<br><ul><li>other causes of cavernous sinus syndrome: local infection (e.g. sinusitis), neoplasia, trauma</li><li>periorbital oedema</li><li>ophthalmoplegia: 6th nerve damage typically occurs before 3rd & 4th</li><li>trigeminal nerve involvement may lead to hyperaesthesia of upper face and eye pain</li><li>central retinal vein thrombosis</li></ul><br>Lateral sinus thrombosis<br><ul><li>6th and 7th cranial nerve palsies</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb178b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb178.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb178b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">CT with contrast demonstrating a <b>superior sagittal sinus thrombosis</b> showing the typical empty delta sign. Look at the 'bottom' of the scan for the triangular shaped dural sinus. This should normally be white due to it being filled with contrast. The empty delta sign occurs when the thrombus fails to enhance within the dural sinus and is outlined by enhanced collateral channels in the falx. This sign is seen in only about 25%-30% of cases but is highly diagnostic for sagittal sinus thrombosis</div></div>
`Babies who were born prematurely should receive their routine vaccinations according to chronological age; there should be no correcting for gestational age. Babies who were born prior to 28 weeks gestation should receive their first set of immunisations at hospital due to risk of apnoea.`
<div id="notecontent">The Department of Health published guidance in 2006 on the safe administration of vaccines in its publication 'Immunisation against infectious disease'<br><br>General contraindications to immunisation<br><ul><li>confirmed anaphylactic reaction to a previous dose of a vaccine containing the same antigens</li><li>confirmed anaphylactic reaction to another component contained in the relevant vaccine (e.g. egg protein)</li></ul><br>Situations where vaccines should be delayed<br><ul><li>febrile illness/intercurrent infection</li></ul><br>Contraindications to live vaccines<br><ul><li>pregnancy</li><li>immunosuppression</li></ul><br>Specific vaccines<br><ul><li>DTP: vaccination should be deferred in children with an evolving or unstable neurological condition</li></ul><br>Not contraindications to immunisation<br><ul><li>asthma or eczema</li><li>history of seizures (if associated with fever then advice should be given regarding antipyretics)</li><li>breastfed child</li><li>previous history of natural pertussis, measles, mumps or rubella infection</li><li>history of neonatal jaundice</li><li>family history of autism</li><li>neurological conditions such as Down's or cerebral palsy</li><li>low birth weight or prematurity</li><li>patients on replacement steroids e.g. (CAH)</li></ul></div>
!!Implantable Contraceptives
<div id="notecontent">Implanon was the original non-biodegradable <span class="concept" data-cid="281">subdermal</span> contraceptive implant which has been replaced by Nexplanon. From a pharmacological perspective Nexplanon is the same as Implanon. The two main differences are:<br><ul><li>the applicator has been redesigned to try and prevent 'deep' insertions (i.e. subcutaneous/intramuscular)</li><li>it is radiopaque and therefore easier to locate if impalpable</li></ul><br>Both versions slowly releases the progestogen hormone etonogestrel. They are typically inserted in the proximal non-dominant arm, just overlying the tricep. The main mechanism of action is <span id="concept_popover_id_282" class="concept concept-0 trigger-link" data-cid="282" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative282'>You've never been tested on this concept</div><br><div id='div_concept_rating282' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(142,255,0)'>Importance: <b>72</b></span> </div>" data-original-title="Nexplanon - main mechanism of action is inhibition of ovulation">preventing ovulation</span>. They also work by thickening the cervical mucus.<br><br>Key points<br><ul><li>highly effective: failure rate 0.07/100 women-years - <span class="concept" data-cid="9659">it is the most effective form of contraception</span></li><li>long-acting: lasts 3 years</li><li>doesn't contain oestrogen so can be used if past history of thromboembolism, migraine etc</li><li>can be inserted immediately following a termination of pregnancy</li></ul><br>Disadvantages include<br><ul><li>the need for a trained professional to insert and remove device</li><li>additional contraceptive methods are needed for the first <span id="concept_popover_id_283" class="concept concept-0 trigger-link" data-cid="283" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative283'>You've never been tested on this concept</div><br><div id='div_concept_rating283' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(132,255,0)'>Importance: <b>74</b></span> </div>" data-original-title="Contraceptives - time until effective (if not first day period):
- instant: IUD
- 2 days: POP
- 7 days: COC, injection, implant, IUS">7 days</span> if not inserted on day 1 to 5 of a woman's menstrual cycle</li></ul><br>Adverse effects<br><ul><li><span class="concept" data-cid="4094"><b>irregular/heavy bleeding</b></span> is the main problem: this is sometimes managed using a <span class="concept" data-cid="4090">co-prescription of the combined oral contraceptive pill</span>. It should be remembered to do a <span class="concept" data-cid="4093">speculum exam/STI</span> check if the bleeding continues</li><li>'progestogen effects': headache, nausea, breast pain</li></ul><br>Interactions<br><ul><li>enzyme-inducing drugs such as certain antiepileptic and rifampicin may reduce the efficacy of Nexplanon</li><li>the FSRH advises that women should be advised to switch to a method unaffected by enzyme-inducing drugs or to use additional contraception until 28 days after stopping the treatment</li></ul><br>Contraindications<br><ul><li>UKMEC 3*: <span class="concept" data-cid="9033">ischaemic heart disease</span>/<span class="concept" data-cid="9034">stroke</span> (for continuation, if initiation then UKMEC 2), unexplained, suspicious vaginal bleeding, <span class="concept" data-cid="9035">past breast cancer</span>, <span class="concept" data-cid="9036">severe liver cirrhosis</span>, <span class="concept" data-cid="9037">liver cancer</span></li><li>UKMEC 4**: <span class="concept" data-cid="9038">current breast cancer</span></li></ul><br><br>*proven risks generally outweigh the advantages<br>**a condition which represents an unacceptable risk if the contraceptive method is used</div>
!!!<center>''INCISION AND DRAINAGE''</center>
<center><iframe width="645" height="484" src="https://www.youtube.com/embed/LTuFz1RkS9s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="CNS Infections"/>CNS INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Chest Infections"/>CHEST INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Gastrointestinal Infections"/>GIT INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Genitourinary Infections"/>GENITOURINARY INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Obstetric Infections"/>OBSTETRIC INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Skin and Connective Tissue Infections"/>SKIN AND CONNECTIVE TISSUE INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Head and Neck Infections"/>HEAD AND NECK INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Eye Infections"/>EYE INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Fungal Infections"/>FUNGAL INFECTIONS</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Fever and Rash"/>FEVER AND RASH</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Sepsis"/>SEPSIS</$button>
</center>
!!!<center>''INFECTIVE ENDOCARDITIS''</center>
<hr>
* Penicillin G 20MU IV divided doses, 4 hourly OR Ampicillin 2gm iv 4h AND Gentamicin 1mg/kg im or iv 8h for 4-6 weeks OR Vancomycin 25-30 mg/kg loading followed by 15-20 mg/kg IV 12 hourly (maximum 1gm 12 hourly) AND Meropenem 1gm IV 8h Duration: 4-6 weeks
<div id="notecontent">The 2008 guidelines from NICE have radically changed the list of procedures for which antibiotic prophylaxis is recommended<br><br>NICE recommends the following procedures do not require prophylaxis:<br><ul><li>dental procedures</li><li>upper and lower gastrointestinal tract procedures</li><li>genitourinary tract; this includes urological, gynaecological and obstetric procedures and childbirth</li><li>upper and lower respiratory tract; this includes ear, nose and throat procedures and bronchoscopy</li></ul><br>The guidelines do however suggest:<br><ul><li>any episodes of infection in people at risk of infective endocarditis should be investigated and treated promptly to reduce the risk of endocarditis developing</li><li>if a person at risk of infective endocarditis is receiving antimicrobial therapy because they are undergoing a gastrointestinal or genitourinary procedure at a site where there is a suspected infection they should be given an antibiotic that covers organisms that cause infective endocarditis</li></ul><br>It is important to note that these recommendations are not in keeping with the American Heart Association/European Society of Cardiology guidelines which still advocate antibiotic prophylaxis for high-risk patients who are undergoing dental procedures.</div>
<div id="notecontent">Infertility affects around 1 in 7 couples. Around 84% of couples who have regular sex will conceive within 1 year, and 92% within 2 years<br><br>Causes<br><ul><li><span class="concept" data-cid="9051">male factor 30%</span></li><li>unexplained 20%</li><li>ovulation failure 20%</li><li>tubal damage 15%</li><li>other causes 15%</li></ul><br>Basic investigations<br><ul><li>semen analysis</li><li><span class="concept" data-cid="5253">serum progesterone 7 days prior to expected next period</span>. For a typical 28 day cycle, this is done on <span class="concept" data-cid="5341">day 21</span>.</li></ul><br><b>Interpretation of serum progestogen</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Level</b></th><th><b>Interpretation</b></th></tr></thead><tbody><tr><td>< 16 nmol/l</td><td>Repeat, if consistently low refer to specialist</td></tr><tr><td>16 - 30 nmol/l</td><td>Repeat</td></tr><tr><td>> 30 nmol/l</td><td>Indicates ovulation</td></tr></tbody></table></div><br>Key counselling points<br><ul><li>folic acid</li><li>aim for BMI 20-25</li><li>advise regular sexual intercourse every 2 to 3 days</li><li>smoking/drinking advice</li></ul></div>
!!!<center>''INFLUENZA''</center>
<hr>
* Oseltamivir 75 BD 5d OR Zanamivir 10mg(2 oral inhalations)
|!DRUG|!ADULT|!CONC|
|!ADRENALINE |2-10 mcg/min or 0.1-0.5 mcg/kg/min |1mg/ml |
|!AMIODARONE |150 mg over 10 min then 1 mg/min x 6 hrs then 0.5 mg/min x 18 hrs |50 mg/ml |
|!DEXMEDETOMIDINE |0.2 to 1.5 mcg/kg/hr ||
|!DILTIAZEM |10-15 mg/hr |5 mg/ml |
|!DOBUTAMINE |2-20 mcg/kg/min; max: 40 mcg/kg/min |50 mg/ml |
|!DOPAMINE |2-20 mcg/kg/min |40 mg/ml |
|!FENTANYL |1-2 mcg/kg/hour |50 mcg/ml |
|!FUROSEMIDE |10-40 mg/hr |10 mg/ml |
|!ISOPROTERENOL |2-10 mcg/minute |2 mg/ml |
|!KETAMINE |2-7 mcg/kg/min |50 mg/ml |
|!LABETALOL |0.5 to 2 mg/minute |5 mg/ml |
|!LORAZEPAM |0.01-0.1 mg/kg/hour |2 mg/ml |
|!MIDAZOLAM |0.02-0.1 mg/kg/hour |1 mg/ml |
|!MORPHINE |1-10 mg/hr |10 mg/ml |
|!NITROGLYCERINE |St 5 to 10 µg/min, inc by 5 q10min to 20 µg/min. Max 400 µg/min |5 mg/ml |
|!NITROPRUSSIDE |St 0.25-0.3 mcg/kg/min; maint: 3 mcg/kg/min; max: 10 mcg/kg/min||
|!NORADRENALINE |8-12 mcg/minute; 0.1-3 mcg/kg/minute |1 mg/ml |
|!OCTREOTIDE |50-100 mcg/hr ||
|!OMEPRAZOLE |8 mg/hr |4 mg/ml |
|!PROPOFOL |5 mcg/kg/min; inc by 5-10 mcg/kg/min; maint: 5-80 mcg/kg/min |10 mg/ml |
|!VASOPRESSIN |0.01 to 0.05 units/min |20 U/ml |
|!VECURONIUM |0.8-1.7 mcg/kg/minute |1 mg/ml |
<div id="body_content">
There are 4 inherited causes of jaundice you need to be aware of: Gilbert's syndrome, Crigler-Najjar syndrome, Dubin-Johnson syndrome and Rotor's syndrome. It is important for the exam to be able to classify them according to whether they cause conjugated or unconjugated hyperbilirubinaemia:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Unconjugated hyperbilirubinaemia</b></th><th><b>Conjugated hyperbilirubinaemia</b></th></tr></thead><tbody><tr><td>Gilbert's syndrome<br>Crigler-Najjar syndrome</td><td>Dubin-Johnson syndrome<br>Rotor syndrome</td></tr></tbody></table></div><br><b>Important points for the exam:</b><br><br><span class="concept" data-cid="8671">Gilbert's syndrome</span><br><ul><li>autosomal recessive</li><li><span class="concept" data-cid="8668">mild deficiency of UDP-glucuronyl transferase</span></li><li>benign</li></ul><br><span class="concept" data-cid="8672">Crigler-Najjar syndrome, type 1</span><br><ul><li>autosomal recessive</li><li><span class="concept" data-cid="8669">absolute deficiency of UDP-glucuronosyl transferase</span></li><li>do not survive to adulthood</li></ul><br><span class="concept" data-cid="8673">Crigler-Najjar syndrome, type 2</span><br><ul><li>slightly more common than type 1 and less severe</li><li>may improve with phenobarbital</li></ul><br><span class="concept" data-cid="8674">Dubin-Johnson syndrome</span><br><ul><li>autosomal recessive. Relatively common in Iranian Jews</li><li><span class="concept" data-cid="8670">mutation in the canalicular multidrug resistance protein 2 (MRP2) results in defective hepatic excretion of bilirubin</span></li><li>results in a grossly black liver</li><li>benign</li></ul><br>Rotor syndrome<br><ul><li>autosomal recessive</li><li>defect in the hepatic uptake and storage of bilirubin</li><li>benign</li></ul></div>
---
>All recessive except Gilbert - CRIBBLER dies in CRIB(as child)
<div id="notecontent">Depo Provera is the main injectable contraceptive used in the UK*. It contains medroxyprogesterone acetate 150mg. It is given via in intramuscular injection every 12 weeks. It can however be given up to 14 weeks after the last dose without the need for extra precautions**<br><br>The main method of action is by inhibiting ovulation. Secondary effects include cervical mucus thickening and endometrial thinning.<br><br>Disadvantages include the fact that the injection cannot be reversed once given. There is also a potential delayed return to fertility (maybe up to 12 months)<br><br>Adverse effects<br><ul><li>irregular bleeding</li><li><span class="concept" data-cid="3570">weight gain</span></li><li>may potentially increased risk of osteoporosis: should only be used in adolescents if no other method of contraception is suitable</li><li>not quickly reversible and fertility may return after a varying time</li></ul><br>Contraindications<br><ul><li><span class="concept" data-cid="10944">breast cancer</span>: current breast cancer is UKMEC 4, past breast cancer is UKMEC 3</li></ul><br>*Noristerat, the other injectable contraceptive licensed in the UK, is rarely used in clinical practice. It is given every 8 weeks<br><br>**the BNF gives different advice, stating a pregnancy test should be done if the interval is greater than 12 weeks and 5 days - this is however not commonly adhered to in the family planning community</div>
---
*The Depo Provera is the only method of contraception which has a proven link with weight gain. Other adverse effects include a delay of up to 1 year in the resumption of fertility, increased risk of osteoporosis and irregular bleeding.
---
>DEPO with LUGGAGE
*DEPO Provera causes WEIGHT gain
---
!!!<center>''INSOMNIA''</center>
<hr>
//A patient hospitalized for lower-extremity cellulitis complains of lying awake for hours at night//
* Immediate Questions
* What is the patient’s mental status? Delirium and dementia both can present with sleep disturbance.
* Is the patient kept awake by pain?
* What is the patient’s daytime sleep pattern?
* Does the patient take hypnotic medications regularly? What are his or her current medications?
* Does the patient have difficulty lying flat? Most often this is related to a cardiopulmonary condition and is often associated with dyspnea.
* Frequent awakening with urinary urgency may be secondary to prostatic hypertrophy with bladder outlet obstruction, hyperglycemia with polyuria, or mobilization of fluid in a patient with congestive failure or chronic venous stasis and insufficiency.
* Awakening after a period of sleep with shortness of breath requiring a prolonged upright posture before resumption of sleep suggests left ventricular failure.
* Delirium. Evaluate the patient for systemic illnesses, sepsis, and liver dysfunction
* Pain. Control of this symptom frequently relieves the sleep disturbance.
* Cardiac disorders?
* Respiratory disorders? Asthma, COPD, CF, pneumonia, and sleep apnea.
* Periodic limb movements or restless legs syndrome.
* Hyperthyroidism. weight loss, hyperdefecation, heat intolerance, anxiety, tachycardia, and tremor.
* Alcohol abuse?
* Psychiatric causes: Depressive illness, Anxiety,
* Situational causes: Noise, Frequent disruptions. Nursing duties such as administration of medications, recording of vital signs, and hygienic activities often interrupt patients’ sleep,anger and anxiety issues
* Check chest and lungs
* Conduct a mental status examination for evidence of anxiety, depression, delirium, and dementia.
* LFT, KFT to evaluate for possible delirium.
* TSH
* CXR for CXF, Pneumonia
* In cases in which there is no contraindication to their use, it is reasonable to include a sleeping medication to be taken as needed with admission orders.
* Oral sleeping medication. Choices include the benzodiazepines, benzodiazepine receptor agonists, chloral hydrate, and antihistamines. Barbiturates are not recommended.
* Zolpidem (Zolfresh) 5–10 mg, and zaleplon 5–10 mg PO nightly are effective
* Diphenhydramine (Benadryl) 25–50 mg PO or IM.
* Hydroxyzine (Atarax) 25–50 mg PO
!!! <center> ''INSULIN SLIDING SCALE''</center>
|!Blood Sugar|!Low Dose Scale|!Med Dose Scale|!High Dose Scale|
|!70-130|0 units|0 units|0 units|
|!131-180|2 units|4 units|8 units|
|!181-240|4 units|8 units|12 units|
|!241-300|6 units|10 units|16 units|
|!300-350|8 units|12 units|20 units|
|!351-400|10 units|16 units|24 units|
|!>400|12 units and call doctor|20 units and call doctor|28 units and call doctor|
!!!<center>''INTRACRANIAL EPIDURAL ABSCESS''</center>
<hr>
* An appropriate regimen for adults with contiguous infection is:
* Metronidazole (15 mg/kg [usually 1 g] [IV] as a loading dose, followed by 7.5 mg/kg [usually 500 mg] IV every eight hours) PLUS
* Either ceftriaxone (2 g IV every 12 hours) or cefotaxime (2 g IV every four to six hours)
* Appropriate empiric parenteral regimens for adults include:
* Vancomycin (15 to 20 mg/kg IV every 8 to 12 hours PLUS
* Metronidazole (15 mg/kg [usually 1 g] IV as a loading dose, followed by 7.5 mg/kg [usually 500 mg] IV every eight hours)
* PLUS
* Either cefotaxime (2 g IV every 6 hours), ceftriaxone (2 g IV every 12 hours), or ceftazidime (2 g IV every 8 hours). Ceftazidime is preferable when Pseudomonas aeruginosa is considered a possible or likely pathogen.
* CNS infections caused by MRSA, alternatives to vancomycin include linezolid (600 mg IV or orally twice daily), trimethoprim- sulfamethoxazole (5 mg of the trimethoprim component/kg IV every 8 to 12 hours)
* Duration: six to eight weeks.
!!!<center>''INTRACRANIAL HEMORRHAGE PROTOCOL''</center>
<hr>
* NPO
* Vital signs, Neuro checks, GCS : q 30 min for 3 hrs, q1h for 24 hrs, then q4h
* NIH Stroke Scale: On admission to unit and OD with morning assessment
* O2 via NC to maintain sats>92
* Intubation if necessary
* NPO if dysphagia and aspiration prevention
* Check signs of impending herniation: Asymmetric nonreactive pupil, decorticate/decerebrate posturing, Cushing’s reflex (↑ BP, ↓ HR)
* Head elevation 30 degrees
* Head CT non contrast STAT, ECG, CBC, KFT, RBS, PT/INR, Lipid profile, LFT, ABG if hypoxia, LP if SAH, EEG if seizures, CXR, UA and Blood cultures if fever
* Insulin sliding scale, maintain between 140-185
* Tab Calpol 650 by feeding tube SOS q6h for temp > 99.6F
* Inj Aciloc 1 amp IV q12h
* If Seizures:
* Inj Diazepam 5 mg IV q5 min, max 15 mg OR
* Inj Lorazepam 2 mg IV q5 min, max 6 mg OR
* Inj Phenytoin 1 gm IV loading dose, then 100 mg IV q8h maintenance dose OR
* Inj Levetiracetam 1000 mg IV loading dose, then 500 mg IV q12h
* Maintain BP around 160/90
* Inj Labetalol 10 mg IV over 2 minutes initially, then 20-40 mg IV q 10min; total dose not to exceed 200 mg
* Alternative: 1-2 mg/min by continuous IV infusion; total dose of 300 mg has been used.
* Raised ICP Rx
* Elevate head 30 deg
* NO excessive flexion or rotation of the neck, avoiding restrictive neck taping, and minimizing stimuli that could induce Valsalva responses, such as endotracheal suctioning
* Inj NS@ 50ml/hr
* Aggressive Rx of fever
* Inj PCM 1000 mg IV q8h sos fever/temp>100.4
* Analgesia and sedation if unstable, intubated; sedation with propofol or midazolam; analgesia with morphine
* Inj Mannitol 1 gm/kg bolus (20 gm in 100 ml), then 0.25-0.5 g/kg q6h
* Inj Mannitol 100 ml IV q8h
* Neuromuscular blockade if necessary
* Inj Lasix 20 mg IV q8h
* Inj Phenobarb load 5-20 mg/kg, followed by 1-4 mg/kg/hr drip
* Removal of CSF if hydrocephalus; ventriculostomy
* Decompressive craniectomy
* Seizure prophylaxis with Phenytoin
* Surgery if hemorrhage>3 cm
* Consult to Neurology
* Consult to Neurosurgery
* Consult to Physical therapy
* Is suspecting SAH and CT -ve, do LP
* LP (gold standard): ↑ opening pressure (>20 cm H2O), Xanthochromia (100% Se if >12 h)
* Nimodipine (60 mg q4h PO) should be started w/i 96h of SAH
!!!<center>''ISCHEMIC STROKE''</center>
<hr>
* Is the patient in window period?
* Is the patient eligible for tPA?
*# Clinical diagnosis of ischemic stroke causing measurable neurologic deficit.
*# Onset of symptoms <4.5 hours,
*# Age ≥18 years
* NPO
* Vital signs, Neuro checks, GCS : q 30 min for 3 hrs, q1h for 24 hrs, then q4h
* NIH Stroke Scale: On admission to unit and OD with morning assessment
* O2 via NC to maintain sats>92
* Intubation if necessary
* Head elevation 30 degrees
* Head CT non contrast STAT, ECG, CBC, KFT, RBS, PT/INR, Lipid profile, LFT, ABG if hypoxia, LP if SAH, EEG if seizures, CXR, UA and Blood cultures if fever
* Insulin sliding scale, maintain between 140-185
* Tab Calpol 650 by feeding tube SOS q6h for temp > 99.6F
* Inj Aciloc 1 amp IV q12h
* If Seizures:
* Inj Diazepam 5 mg IV q5 min, max 15 mg OR
* Inj Lorazepam 2 mg IV q5 min, max 6 mg OR
* Inj Phenytoin 1 gm IV loading dose, then 100 mg IV q8h maintenance dose OR
* Inj Levetiracetam 1000 mg IV loading dose, then 500 mg IV q12h
* Antihypertensives only if BP>220/120
* Inj Labetalol 10 mg IV over 2 minutes initially, then 20-40 mg IV q10 min; total dose not to exceed 200 mg
* Alternative: 1-2 mg/min by continuous IV infusion; total dose of 300 mg has been used.
* Inj NS at 75 ml/hr Therapeutic window for thrombolysis (< 4.5 hours from symptom onset)
* Altepase: Total dose: 0.9 mg/kg (max: 90 mg); ≤100 kg: Load with 0.09 mg/kg (10% of 0.9 mg/kg dose) as an I.V. bolus over 1 minute, followed by 0.81 mg/kg (90% of 0.9 mg/kg dose) as a continuous infusion over 60 minutes;>100 kg: Load with 9 mg (10% of 90 mg) as an I.V. bolus over 1 minute, followed by 81 mg (90% of 90 mg) as a continuous infusion over 60 minutes.
* Tab Ecospirin 150 mg STAT and then OD
* Tab Clopitab 75 mg STAT and then OD.
* Tab Lipikind 40 mg OD
* For DVT Prophylaxis Inj Lorapin 40 mg SC OD or DVT pump
* If embolic stroke with afib start Warfarin after 48 hrs or at DC (no large infarct or hemorrhagic transformation)
* If intracardiac thrombus: LMWX + Warfarin, no aspirin
* Speech and swallow evaluation
* Ryles tube feeding next day
* Fall precautions
* Physiotherapy
* ''Transient Ischemic Attack''
* Definition: Acute focal neurologic dysfxn 2/2 ischemia from arterial occlusion but completely resolving within 24 h (usually <1 h)
* Risk of CVA after TIA: 3% w/i 2 d, 5% w/i 7 d;
* DO ABCD2 Score
* If sx not fully resolved (NIHSS > 0): W/U as acute CVA (Noncontrast CT & CTA)
* If sx fully resolved (NIHSS = 0): May defer CT & obtain MRI/MRA w/i 24 h, unless c/f other etiologies (eg, partial sz 2/2 underlying neoplasm)
* Need to find etiology of TIA (echo, carotid imaging, Holter, MRI/MRA), usually as inpt
* Tx focuses on short- & long-term risk reduction
* ASA (325 mg QD) ± clopidogrel (75 mg QD) based on severity of intracranial stenosis
* Antihypertensives only if BP>220/120
* Statin therapy if LDL >100 mg/dL
* Anti-coagulation if e/o Afib/Aflutter; if CI to A/C, ASA ± clopidogrel
* Carotid revascularization: Recommended for high-grade (>70%) & moderate (50–69%, NNT 15) stenosis no risk reduction if stenosis <50%; if able to undergo CEA, CEA preferred over CAS
* Lifestyle modifications: Weight loss, diet/low-salt, exercise, ↓ ETOH, ↓ tobacco
Isolated systolic hypertension (ISH) is common in the elderly, affecting around 50% of people older than 70 years old. The Systolic Hypertension in the Elderly Program (SHEP) back in 1991 established that treating ISH reduced both strokes and ischaemic heart disease.
NICE guidelines which recommends treating ISH in the same stepwise fashion as standard hypertension.
<hr><center>''ISOPROTERENOL''</center><hr>
<center>''Adult Dosage''</center><hr>
''Bradyarrhythmias, AV nodal block, or refractory torsade de pointes:''
* ''Continuous I.V. infusion:'' Usual range: 2-10 mcg/minute; titrate to patient response.
* 1 amp= 2 mg/ml, 2 ml =4 ml total. Mix 1 amp in 50 cc NS. Start at 1.5 ml/hr inc up to 7.5 ml/hr
<div id="body_content">
Intrauterine contraceptive devices comprise both conventional copper intrauterine devices (IUDs) and levonorgestrel-releasing intrauterine systems (IUS, Mirena). The IUS is also used in the management of menorrhagia<br><br>Effectiveness<br><ul><li>both the IUD and IUS are more than 99% effective</li></ul><br>Mode of action<br><ul><li>IUD: primary mode of action is prevention of fertilisation by causing decreased sperm motility and survival (possibly an effect of copper ions)</li><li>IUS: levonorgestrel prevents endometrial proliferation and causes cervical mucous thickening</li></ul><br>Counselling<br><ul><li>IUD is effective <span class="concept" data-cid="271">immediately</span> following insertion</li><li>IUS can be relied upon after <span class="concept" data-cid="271">7 days</span></li></ul><br>Potential problems<br><ul><li>IUDs make periods heavier, longer and more painful</li><li>the IUS is associated with initial frequent uterine bleeding and spotting. Later women typically have intermittent light menses with less dysmenorrhoea and some women become amenorrhoeic</li><li>uterine perforation: up to <span class="concept" data-cid="4292">2 per 1000 insertions</span> and higher in breastfeeding women</li><li><span class="concept" data-cid="272">the proportion of pregnancies that are ectopic is increased but the absolute number of ectopic pregnancies is reduced, compared to a woman not using contraception</span></li><li>infection: there is a small increased risk of pelvic inflammatory disease in the first 20 days after insertion but after this period the risk returns to that of a standard population</li><li>expulsion: risk is around <span class="concept" data-cid="4293">1 in 20</span>, and is most likely to occur in the first 3 months</li></ul><br><b>New IUS systems</b><br><br>The Jaydess IUS is licensed for <span class="concept" data-cid="9009">3 years</span>. It has a <span class="concept" data-cid="9010">smaller frame</span>, narrower inserter tube and <span class="concept" data-cid="9011">less levonorgestrel</span> (LNG) than the Mirena coil (13.5 mg compared to 52 mg). This results in <span class="concept" data-cid="9012">lower serum levels</span> of LNG.<br><br>The Kyleena IUS has 19.5mg LNG and is also <span class="concept" data-cid="9016">smaller</span> than the Mirena but is licensed for <span class="concept" data-cid="9013">5 years.</span>. It also results in <span class="concept" data-cid="9014">lower serum levels of LNG</span>. The <span class="concept" data-cid="9015">rate of amenorrhoea</span> is less with Kyleena compared to Mirena.</div>
<div id="body_content">
Ivabradine is a class of anti-anginal drug which works by reducing the heart rate. It acts on the <span class="concept" data-cid="8531">I<sub>f</sub> ('funny') ion current</span> which is highly expressed in the sinoatrial node, reducing cardiac pacemaker activity.<br><br>Adverse effects<br><ul><li><span class="concept" data-cid="8530">visual effects</span>, particular <span class="concept" data-cid="587">luminous phenomena</span>, are common</li><li><span class="concept" data-cid="8529">headache</span></li><li><span class="concept" data-cid="8527">bradycardia</span>, <span class="concept" data-cid="8528">heart block</span></li></ul> <br>There is no evidence currently of superiority over existing treatments of stable angina.</div>
!!!<center>''JAUNDICE''</center>
<hr>
//A 66-year-old woman is admitted because of icteric sclerae and abdominal pain.//
* Immediate Questions
* What are the patient’s vital signs? Fever and tachycardia with or without hypotension can indicate sepsis associated with ascending cholangitis. This is a medical emergency and requires immediate aggressive intervention.
* Does the patient have diabetes? Diabetes is a significant risk factor for ascending cholangitis.
* Is there a history of alcoholism or chronic alcohol use? Cirrhosis may be a source of jaundice.
* Hepatitis? Viral hepatitis could be the source of the jaundice. A viral prodrome is often elicited.
* Is there associated abdominal pain? A history of postprandial right upper quadrant or epigastric pain, especially with radiation to the back, may represent biliary colic.
* Is there a history of previous biliary surgery? Jaundice may occur as a result of a retained common duct stone or biliary stricture.
* The differential diagnosis of jaundice can be classified as either surgical or medical.
# ''Surgical'': extrahepatic biliary obstruction. This category includes carcinoma and common bile duct stones. Biliary obstruction may lead to cholangitis and potentially life-threatening sepsis.
# ''Medical'':
## Alcoholic liver disease.
## Viral hepatitis.
## Other: Autoimmune disorders
## Hemolysis. Rarely raises the bilirubin over 5 mg/dL. Look for an increased reticulocyte count and an increased indirect bilirubin.
## Primary biliary cirrhosis. Usually found in middle-aged women, who present with jaundice, fatigue, and pruritus.
## Drugs. May cause hepatitis, cholestasis, or hemolysis.
## Pregnancy. Acute fatty liver of pregnancy is a rare disorder that usually occurs in the third trimester.
## Postoperative cholestasis. Diagnosis of exclusion.
## Sepsis. Diagnosis of exclusion.
* Look for hepatomegaly or palpable gallbladder (Courvoisier’s sign), which may indicate malignant obstruction.
* Right upper quadrant tenderness, and Murphy’s sign?
* Get LFT, PT/INR, Hepatitis markers, USG abd,
* There are two basic patterns in liver
* function tests: hepatocellular and hepatocanalicular.
* The hepatocellular pattern is characterized by AST and ALT 10 times the upper limits of normal with much smaller increases in alkaline phosphatase or GGT and bilirubin.
* Conversely, the hepatocanalicular pattern is suggested when the alkaline phosphatase or GGT is 5–10 times normal with relatively normal transaminases. Bilirubin is also more commonly elevated.
* Transaminases > 300 almost never occur in alcoholic liver disease without the combined effect of some other problem
* Bilirubin levels > 20 are very suggestive of extrahepatic cholestasis. An elevated indirect bilirubin suggests hemolysis; an elevated total bilirubin secondary to hemolysis alone seldom exceeds 5 mg/dL.
* Significant elevations in amylase (> 10 times the upper limits of normal) are suggestive of biliary disease.
* If acute cholangitis is suspected, the evaluation must proceed emergently.
* Patients with signs of liver failure, including significant coagulopathy-hepatic encephalopathy, acidosis, and renal failure, require management in an ICU.
# ''Medical'': hepatocellular cholestasis
## ''Viral hepatitis'' Patients who are dehydrated or vomiting or have significant coagulopathy need admission for treatment with IV fluids, vitamin K, and fresh-frozen plasma.
## ''Alcoholic liver disease'' Requires aggressive supportive care, entailing dietary restriction of protein, full evaluation of any coagulopathy, and treatment of associated electrolyte deficiencies that are often encountered in alcoholics (eg, hypokalemia, hypomagnesemia, and hypophosphatemia). Thiamine, folate, and multivitamins may be needed. In a patient with ascites, a paracentesis should be performed prophylactic antibiotics are recommended to prevent peritonitis if the total protein in the ascitic fluid is < 1 g/dL or if the patient had a previous episode of spontaneous bacterial peritonitis. Norfloxacin 400 mg per day; ciprofloxacin 750 mg per week; Bactrim DS, 1 pill per day, 5 days per week should be given indefinitely.
# ''Surgical'': extrahepatic cholestasis. Extrahepatic biliary obstruction can be conceptualized in two forms: chronic and acute.
## ''Chronic extrahepatic cholestasis''. Usually accompanied by biliary ductal dilation, which can be demonstrated by various techniques.
## ''Acute biliary obstruction''. Jaundice due to acute biliary obstruction, usually by a gallstone, can be more difficult to evaluate.
* If Noninvasive imaging studies such as ultrasound or CT fail to reveal then do ERCP
<div id="body_content">
As well as providing information on right atrial pressure, the jugular vein waveform may provide clues to underlying valvular disease. A non-pulsatile JVP is seen in <span class="concept" data-cid="7954">superior vena caval obstruction</span>. Kussmaul's sign describes a paradoxical rise in JVP during inspiration seen in <span class="concept" data-cid="7955">constrictive pericarditis</span>.<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd134b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd134.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd134b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>'a' wave = atrial contraction<br><ul><li>large if atrial pressure e.g. <span class="concept" data-cid="7956">tricuspid stenosis</span>, pulmonary stenosis, <span class="concept" data-cid="7957">pulmonary hypertension</span></li><li>absent if in <span class="concept" data-cid="7958">atrial fibrillation</span></li></ul><br>Cannon 'a' waves<br><ul><li>caused by atrial contractions against a closed tricuspid valve</li><li>are seen in <span class="concept" data-cid="7959">complete heart block</span>, <span class="concept" data-cid="7960">ventricular tachycardia</span>/ectopics, nodal rhythm, single chamber ventricular pacing</li></ul><br>'c' wave<br><ul><li>closure of tricuspid valve</li><li>not normally visible</li></ul><br>'v' wave<br><ul><li>due to passive filling of blood into the atrium against a closed tricuspid valve</li><li>giant v waves in tricuspid regurgitation</li></ul><br>'x' descent = fall in atrial pressure during ventricular systole<br><br>'y' descent = opening of tricuspid valve</div>
Kartagener's syndrome (also known as primary ciliary dyskinesia) was first described in 1933 and most frequently occurs in examinations due to its association with dextrocardia (e.g. 'quiet heart sounds', 'small volume complexes in lateral leads')
Pathogenesis
* dynein arm defect results in immotile cilia
Features
* dextrocardia or complete situs inversus
* bronchiectasis
* recurrent sinusitis
* subfertility (secondary to diminished sperm motility and defective ciliary action in the fallopian tubes)
Kawasaki disease is a type of vasculitis which is predominately seen in children. Whilst Kawasaki disease is uncommon it is important to recognise as it may cause potentially serious complications, including coronary artery aneurysms.
Features
* high-grade fever which lasts for > 5 days. Fever is characteristically resistant to antipyretics
* conjunctival injection
* bright red, cracked lips
* strawberry tongue
* cervical lymphadenopathy
* red palms of the hands and the soles of the feet which later peel
Kawasaki disease is a clinical diagnosis as there is no specific diagnostic test.
Management
* high-dose aspirin
** Kawasaki disease is one of the few indications for the use of aspirin in children. Due to the risk of ReYe's syndrome aspirin is normally contraindicated in children
* intravenous immunoglobulin
* echocardiogram (rather than angiography) is used as the initial screening test for coronary artery aneurysms
Complications
* coronary artery aneurysm
<div id="notecontent">Keloid scars are tumour-like lesions that arise from the connective tissue of a scar and extend beyond the dimensions of the original wound<br><br>Predisposing factors<br><ul><li>ethnicity: more common in people with <span class="concept" data-cid="383">dark skin</span></li><li>occur more commonly in young adults, rare in the elderly</li><li>common sites (in order of decreasing frequency): <span id="concept_popover_id_384" class="concept concept-0 trigger-link" data-cid="384" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative384'>You've never been tested on this concept</div><br><div id='div_concept_rating384' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(163,255,0)'>Importance: <b>68</b></span> </div>" data-original-title="Keloid scars are most common on the sternum">sternum</span>, shoulder, neck, face, extensor surface of limbs, trunk</li></ul><br>Keloid scars are less likely if incisions are made along relaxed skin tension lines*<br><br>Treatment<br><ul><li>early keloids may be treated with intra-lesional steroids e.g. triamcinolone</li><li>excision is sometimes required</li></ul><br><div class="container"><div class="row"><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pda803.jpg" data-fancybox="gallery" data-caption="Image showing a keloid scar at the site of abdominal surgery. Note the lesions below the umbilicus and also in the right iliac fossa. This was possibly a laparoscopic procedure that was 'converted' to a laparotomy. <br><br>By Htirgan - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=32782658"><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pda803.jpg" alt=""></a></div></div></div><br>*Langer lines were historically used to determine the optimal incision line. They were based on procedures done on cadavers but have been shown to produce worse cosmetic results than when following skin tension lines</div>
<div id="notecontent">Keratitis describes inflammation of the cornea. Microbial keratitis is not like conjunctivitis - it is potentially sight threatening and should therefore be urgently evaluated and treated.<br><br><br><b>Aetiology</b><br><br>Causes<br><ul><li>bacterial<ul><li>typically <i>Staphylococcus aureus</i></li><li><span class="concept" data-cid="4249"><i>Pseudomonas aeruginosa</i> is seen in contact lens wearers</span></li></ul></li><li>fungal</li><li>amoebic<ul><li><span class="concept" data-cid="5204">acanthamoebic keratitis</span></li><li>accounts for around 5% of cases</li><li>increased incidence if eye exposure to soil or <span class="concept" data-cid="10697">contaminated water</span></li></ul></li><li>parasitic: onchocercal keratitis ('river blindness')</li></ul><br>Remember, other factors may causes keratitis:<br><ul><li>viral: <span class="concept" data-cid="9547">herpes simplex keratitis</span></li><li>environmental<ul><li>photokeratitis: e.g. welder's arc eye</li><li>exposure keratitis</li><li>contact lens acute red eye (CLARE)</li></ul></li></ul><br><br><b>Clinical features</b><br><br><span id="concept_popover_id_5147" class="concept concept-1 trigger-link" data-cid="5147" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5147'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating5147' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(198,255,0)'>Importance: <b>61</b></span> </div>" data-original-title="Features of keratitis: red eye, photophobia and gritty sensation">Features</span><br><ul><li>red eye: pain and erythema</li><li>photophobia</li><li>foreign body, gritty sensation</li><li>hypopyon may be seen</li></ul><br><br><b>Evaluation and management</b><br><br>Referral<br><ul><li>contact lens wearers<ul><li>assessing contact lens wearers who present with a painful red eye is difficult</li><li>an accurate diagnosis can only usually be made with a slit-lamp,<span class="concept" data-cid="10661"> meaning same-day referral to an eye specialist is usually required to rule out microbial keratitis</span></li></ul></li></ul><br>Management<br><ul><li>stop using contact lens until the symptoms have fully resolved</li><li>topical antibiotics<ul><li>typically quinolones are used first-line</li></ul></li><li>cycloplegic for pain relief<ul><li>e.g. cyclopentolate</li></ul></li></ul><br>Complications may include:<br><ul><li>corneal scarring</li><li>perforation</li><li>endophthalmitis</li><li>visual loss</li></ul></div>
---
* AnteriorUveitis cause photophobia - blurred vision - RedEye - irregular/small pupil - hypopyon - ciliary flush
* KeraTitis may mimic AnteriorUveitis but pupillary reaction is normal in KeraTitis
* ConjuctiVitis does not cause photophobia - does not affect pupils
* EpiScleritis does not affect visual acuity
* PosteriorUveitis causes floaters
---
<hr><center>''KETAMINE''</center><hr>
<center>''Adult Dosage''</center><hr>
''Sedation/analgesia:''
* ''I.M.:'' 2-4 mg/kg, I.V.: 0.2-0.75 mg/kg; Continuous I.V. infusion: 2-7 mcg/kg/minute
''Induction of anesthesia:''
* ''I.M.:'' 4-10 mg/kg; I.V.: 0.5-2 mg/kg
''Maintenance of anesthesia:''
* 1-2 mg/minute
<hr><center>''Pediatric Dosage''</center><hr>
''Children:''
* ''I.M.:'' 3-7 mg/kg;
* ''I.V.:'' Range: 0.5-2 mg/kg, use smaller doses (0.5-1 mg/kg) for sedation for minor procedures; usual induction dosage: 1-2 mg/kg;
''Continuous I.V. infusion:''
* ''Sedation:'' 5-20 mcg/kg/minute; start at lower dosage listed and titrate to effect
!!!Presentation
* ''during the antenatal period'': imaging of the heart is part of the 18-20 week fetal anomaly scan
* ''murmur'': may be detected during the routine newborn examine
* cyanosis
* ''heart failure'': features may include poor feeding, shortness of breath, sweating, hepatomegaly
>TETRA signs for TETROLOGY
*Congenital Heart Failure signs - Tachypnea - Tachycardia - Cardiomegaly - Hepatomegaly
Klinefelter's syndrome is associated with karyotype 47, XXY.
Features
*often taller than average
*lack of secondary sexual characteristics
*small, firm testes
*infertile
*gynaecomastia - increased incidence of breast cancer
*elevated gonadotrophin levels but low testosterone
Diagnosis is by karyotype (chromosomal analysis).
>FELT small FIRM testes, large boobs
<div id="body_content">
The table below summarises the key features of common knee problems:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Condition</b></th><th><b>Key features</b></th></tr></thead><tbody><tr><td><b>Chondromalacia patellae</b></td><td>Softening of the cartilage of the patella<br>Common in teenage girls<br>Characteristically anterior knee pain on walking up and down stairs and rising from prolonged sitting<br>Usually responds to physiotherapy</td></tr><tr><td><b>Osgood-Schlatter disease<br>(tibial apophysitis)</b></td><td>Seen in sporty teenagers<br>Pain, tenderness and swelling over the tibial tubercle</td></tr><tr><td><b>Osteochondritis dissecans</b></td><td>Pain after exercise<br>Intermittent swelling and locking</td></tr><tr><td><b>Patellar subluxation</b></td><td>Medial knee pain due to lateral subluxation of the patella<br>Knee may give way</td></tr><tr><td><b>Patellar tendonitis</b></td><td>More common in athletic teenage boys<br>Chronic anterior knee pain that worsens after running<br>Tender below the patella on examination</td></tr></tbody></table></div><br>Referred pain may come from hip problems such as slipped upper femoral epiphysis<br><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd507b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd507.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd507b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
---
>DESSICANS LOCKS AS DRY
>iCHANDRAMALA (CHONDROMALA) is TEENAGE GIRL going UP and DOWN the stairs
---
!!Potassium-sparing diuretics
may be divided into the epithelial sodium channel blockers (amiloride and triamterene) and aldosterone antagonists (spironolactone and eplerenone).
''Amiloride'' is a weak diuretic which blocks the epithelial sodium channel in the distal convoluted tubule.
Usually given with thiazides or loop diuretics as an alternative to potassium supplementation.
''Spironolactone'' is an aldosterone antagonist which acts act in the distal convoluted tubule.
Indications
* ascites: patients with cirrhosis develop a secondary hyperaldosteronism. Relatively large doses such as 100 or 200mg are often used
* heart failure
* nephrotic syndrome
* Conn's syndrome
Labial adhesions describe the fusion of the labia minora in the midline. It is usually seen in girls between the ages of 3 months and 3 years and can generally be treated conservatively.
Spontaneous resolution tends to occur around puberty. It should be noted that the condition is different from an imperforate hymen.
The majority of cases are symptomatic. Features may include:
* problems with micturition including pooling in the vagina
* on examination thin semitranslucent adhesions covering the vaginal opening between the labia minora are seen, which sometimes cover the vaginal opening completely
Management
* conservative management is appropriate in the majority of cases
* if there are associated problems such as recurrent urinary tract infections oestrogen cream may be tried
* if this fails surgical intervention may be warranted
`Labial adhesions: if recurrent urinary tract infections, oestrogen cream may be tried`
Lamotrigine is an antiepileptic used second-line for a variety of generalised and partial seizures.
Mechanism of action
*sodium channel blocker
Adverse effects
*Stevens-Johnson syndrome
Cutaneous Larva Migrans is caused by the infection of the dog hook worm Ancyclostoma Braziliense.
Man is an accidental dead end host and so the larva is unable to migrate to the lungs and intestine. The intensely itchy trial is a result of the subcutaneous migration of the frustrated larva.
Management is with Albendazole or Ivermectin.
<div id="notecontent">Lateral epicondylitis typically follows unaccustomed activity such as house painting or playing tennis ('tennis elbow'). It is most common in people aged 45-55 years and typically affects the dominant arm.<br><br>Features<br><ul><li>pain and tenderness localised to the lateral epicondyle</li><li><span id="concept_popover_id_224" class="concept concept-0 trigger-link" data-cid="224" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative224'>You've never been tested on this concept</div><br><div id='div_concept_rating224' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(198,255,0)'>Importance: <b>61</b></span> </div>" data-original-title="Lateral epicondylitis: worse on resisted wrist extension/suppination whilst elbow extended">pain worse on wrist extension against resistance with the elbow extended or supination of the forearm with the elbow extended</span></li><li>episodes typically last between 6 months and 2 years. Patients tend to have acute pain for 6-12 weeks</li></ul><br>Management options<br><ul><li>advice on avoiding muscle overload</li><li>simple analgesia</li><li>steroid injection</li><li>physiotherapy</li></ul></div>
---
>DDs
''Radial tunnel syndrome'' can be difficult to distinguish from lateral epicondylitis as both conditions present with lateral elbow pain. Radial tunnel syndrome however typically presents with tenderness distal to the common extensor origin in comparison to lateral epicondylitis where there is pain over the common extensor origin. It is most common in gymnasts, racquet players and golfers who frequently hyperextend at the wrist or carry out frequent supination/pronation. Patients can also complain of hand paraesthesia or aching at the wrist.
Cubital tunnel syndrome patients experience tingling and numbness in the 4th and 5th finger.
In olecranon bursitis, there would be presence of swelling over the posterior elbow.
Cervical radiculopathy would cause a burning pain radiating from shoulder to fingers. There may be reduced cervical range of motion or pain as clues in the history.
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pda011.png">
</center>
;~WiLLiaM ~MaRRoW
:in LBBB there is a 'W' in V1 and a 'M' in V6
:in RBBB there is a 'M' in V1 and a 'W' in V6
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg064b.jpg">
</center>
ECG showing typical features of LBBB
!!!Causes of LBBB
* ischaemic heart disease
* hypertension
* aortic stenosis
* cardiomyopathy
* rare: idiopathic fibrosis, digoxin toxicity, hyperkalaemia
New LBBB is always pathological and may be a sign of a myocardial infarction. Diagnosing a myocardial infarction for patients with existing LBBB is difficult. The Sgarbossa criteria can help with this. Please see the link for more details.
<div id="notecontent">Lower back pain (LBP) is one of the most common presentations seen in practice. Whilst the majority of presentations will be of a non-specific muscular nature it is worth keeping in mind possible causes which may need specific treatment. <br><br>Red flags for lower back pain<br><ul><li>age < 20 years or > 50 years</li><li>history of previous malignancy</li><li>night pain</li><li>history of trauma</li><li>systemically unwell e.g. weight loss, fever</li></ul><br>The table below indicates some specific causes of LBP:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Facet joint</b></th><th>May be acute or chronic<br>Pain worse in the morning and on standing<br>On examination there may be pain over the facets. The pain is typically worse on extension of the back</th></tr></thead><tbody><tr><td><b>Spinal stenosis</b></td><td>Usually gradual onset<br>Unilateral or bilateral leg pain (with or without back pain), numbness, and weakness which is worse on walking. Resolves when sits down. Pain may be described as 'aching', 'crawling'.<br>Relieved by sitting down, leaning forwards and crouching down<br>Clinical examination is often normal<br>Requires MRI to confirm diagnosis</td></tr><tr><td><b>Ankylosing spondylitis</b></td><td>Typically a young man who presents with lower back pain and stiffness<br>Stiffness is usually worse in morning and improves with activity<br>Peripheral arthritis (25%, more common if female)</td></tr><tr><td><b>Peripheral arterial disease</b></td><td>Pain on walking, relieved by rest<br>Absent or weak foot pulses and other signs of limb ischaemia<br>Past history may include smoking and other vascular diseases</td></tr></tbody></table></div></div>
!!Red Flags for back pain
* Thoracic pain
* Age <20 or >55 years
* Non-mechanical pain
* Pain worse when supine
* Night pain
* Weight loss
* Pain associated with systemic illness
* Presence of neurological signs
* Past medical history of cancer or HIV
* Immunosuppression or steroid use
* IV drug use
* Structural deformity
Patients with red flags should have blood tests for FBC, ESR, Calcium, Phosphate, Alkaline phosphatase and PSA if appropriate. X-ray imaging should also be arranged.
!! Ix Dx
NICE updated their guidelines on the management of lower back pain in 2016. They apply to patients with non-specific lower back pain (i.e. not due to malignancy, infection, trauma etc)
`NSAIDs are now first-line for back pain`
;Investigation
* lumbar spine x-ray should not be offered
* MRI
** should only be offered to patients with non-specific back pain 'only if the result is likely to change management' and to patients where malignancy, infection, fracture, cauda equina or ankylosing spondylitis is suspected
** it is the most useful imaging modality as no other imaging can see neurological / soft tissue structures
;Advice to people with low back pain
* try to encourage self-management
* stay physically active and exercise
;Analgesia
* NSAIDS are now recommended first-line for patients with back pain. This follows studies that show paracetamol monotherapy is relatively ineffective for back pain
* proton pump inhibitors should be co-prescribed for patients over the age of 45 years who are given NSAIDs
* NICE guidelines on neuropathic pain should be followed for patients with sciatica
;Other possible treatments
* exercise programme: 'Consider a group exercise programme (biomechanical, aerobic, mindbody or a combination of approaches) within the NHS for people '
* manual therapy (spinal manipulation, mobilisation or soft tissue techniques such as massage) 'but only as part of a treatment package including exercise, with or without psychological therapy.'
* radiofrequency denervation
* epidural injections of local anaesthetic and steroid for acute and severe sciatica
<div id="body_content">
Along with acute intermittent porphyria, lead poisoning should be considered in questions giving a combination of abdominal pain and neurological signs. Lead poisoning results in <span class="concept" data-cid="8306">defective ferrochelatase and ALA dehydratase function</span>.<br><br><span class="concept" data-cid="828">Features</span><br><ul><li><span class="concept" data-cid="8303">abdominal pain</span></li><li><span class="concept" data-cid="8304">peripheral neuropathy (mainly motor)</span></li><li>fatigue</li><li>constipation</li><li><span class="concept" data-cid="8305">blue lines on gum</span> margin (only 20% of adult patients, very rare in children)</li></ul><br>Investigations<br><ul><li>the blood lead level is usually used for diagnosis. Levels greater than 10 mcg/dl are considered significant</li><li>full blood count: microcytic anaemia. Blood film shows red cell abnormalities including <span class="concept" data-cid="6132">basophilic stippling</span> and clover-leaf morphology</li><li>raised serum and urine levels of delta aminolaevulinic acid may be seen making it sometimes difficult to differentiate from acute intermittent porphyria</li><li>urinary coproporphyrin is also increased (urinary porphobilinogen and uroporphyrin levels are normal to slightly increased)</li><li>in children, <span class="concept" data-cid="9887">lead can accumulate in the metaphysis of the bones</span> although x-rays are not part of the standard work-up</li></ul><br>Management - various chelating agents are currently used:<br><ul><li>dimercaptosuccinic acid (DMSA)</li><li>D-penicillamine</li><li>EDTA</li><li>dimercaprol</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd510b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd510.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd510b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
<hr>
''LEAD SUCks 12321''<br>
Leadlines<br>
Encephalopathy irreversible (Confusion-Memory Loss) - Erythrocyte stippling<br>
Abd Pain - Anemia(sideroblastic) - ATN<br>
Drops(peripheral neuropathy) - Dimercaprol(BAL) - eDta<br>
SUCCimer(oral form)<br>
<hr>
Succimer in Mild to Moderate - EDTA in Moderate to Severe<br>
SUCCimer is SUCKable form of Dimercaprol (Di Mercaprol Succinyl Acid)<br>
<hr>
* IschemicUlcer
** arterial disease common in male, hypertensive, smokers
** Arterial ulcers have punched out edges and often occur over bony prominences where pressure is applied. They are found predominantly on the lateral side of the distal leg and the limb is often cool and pulseless.
* VenousUlcer
** tend to occur over the medial aspect of the distal leg, just above the medial malleolus and are very painful.
*NeuropathicUlcer
** deep and painless
** peripheral sensory neuropathy secondary to Diabetes
** common at the sites of pressure and repeated trauma
* MarjoLin's Ulcer
** This is a rare and often aggressive cutaneous malignancy that `arises in previously traumatised or chronically inflamed skin`.
** Base is sloughed and edges are raised
** Always be aware of the possibility of neoplastic change in non-healing ulcers.
<div id="body_content">
Legionnaire's disease is caused by the intracellular bacterium <i>Legionella pneumophilia</i>. It typically colonizes water tanks and hence questions may hint at <span class="concept" data-cid="4148">air-conditioning systems or foreign holidays</span>. Person-to-person transmission is not seen<br><br>Features<br><ul><li>flu-like symptoms including fever (present in > 95% of patients)</li><li>dry cough</li><li><span class="concept" data-cid="8444">relative bradycardia</span></li><li><span class="concept" data-cid="8445">confusion</span></li><li><span class="concept" data-cid="1816">lymphopaenia</span></li><li><span class="concept" data-cid="1816">hyponatraemia</span></li><li><span class="concept" data-cid="8446">deranged liver function tests</span></li><li>pleural effusion: seen in around 30% of patients</li></ul><br>Diagnosis<br><ul><li><span class="concept" data-cid="861">urinary antigen</span></li></ul><br>Management<br><ul><li><span class="concept" data-cid="8432">treat with erythromycin/clarithromycin</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd903b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd903.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd903b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of Legionella and Mycoplasma pneumonia</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb233b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb233.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb233b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Chest x-ray features of legionella pnuemonia are non-specific but includes a mid-to-lower zone predominance of patchy consolidation. Pleural effusions are seen in around 30%.</div></div>
Causes
* Marfan's syndrome: upwards
* homocystinuria: downwards
* Ehlers-Danlos syndrome
* trauma
* uveal tumours
* autosomal recessive ectopia lentis
!!Lewy body dementia
is an increasingly recognised cause of dementia, accounting for up to 20% of cases. The characteristic pathological feature is alpha-synuclein cytoplasmic inclusions (Lewy bodies) in the substantia nigra, paralimbic and neocortical areas.
The relationship between Parkinson's disease and Lewy body dementia is complicated, particularly as dementia is often seen in Parkinson's disease. Also, up to 40% of patients with Alzheimer's have Lewy bodies.
Features
* progressive cognitive impairment
** in contrast to Alzheimer's, early impairments in attention and executive function rather than just memory loss
** cognition may be fluctuating, in contrast to other forms of dementia
** usually develops before parkinsonism
* `parkinsonism`
* `visual hallucinations` (other features such as delusions and non-visual hallucinations may also be seen)
Diagnosis
* usually clinical
* single-photon emission computed tomography (SPECT) is increasingly used. It is currently commercially known as a DaTscan. Dopaminergic iodine-123-radiolabelled 2-carbomethoxy-3-(4-iodophenyl)-N-(3-fluoropropyl) nortropane (123-I FP-CIT) is used as the radioisotope. The sensitivity of SPECT in diagnosing Lewy body dementia is around 90% with a specificity of 100%
Management
* both acetylcholinesterase inhibitors (e.g. donepezil, rivastigmine) and memantine can be used as they are in Alzheimer's. NICE have made detailed recommendations about what drugs to use at what stages. Please see the link for more details
* neuroleptics should be avoided in Lewy body dementia as patients are extremely sensitive and may develop irreversible parkinsonism. Questions may give a history of a patient who has deteriorated following the introduction of an antipsychotic agent
!!Lichen planus
is a skin disorder of unknown aetiology, most probably being immune-mediated.
;Features
* itchy, papular rash most common on the palms, soles, genitalia and flexor surfaces of arms
* rash often polygonal in shape, with a 'white-lines' pattern on the surface (Wickham's striae)
* Koebner phenomenon may be seen (new skin lesions appearing at the site of trauma)
* oral involvement in around 50% of patients: typically a white-lace pattern on the buccal mucosa
* nails: thinning of nail plate, longitudinal ridging
;Lichenoid drug eruptions - causes:
* gold
* quinine
* thiazides
;Management
* potent topical steroids are the mainstay of treatment
* benzydamine mouthwash or spray is recommended for oral lichen planus
* extensive lichen planus may require oral steroids or immunosuppression
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd110b.jpg">
</center>
<br>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd111b.jpg">
</center>
<br>
<center>
<img width=300 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd112b.jpg">
</center>
<br>
---
;`Lichen Planus Vs. Sclerous`
*''P''lanus: ''P''urple, ''P''ruritic, ''P''apular, ''P''olygonal rash on ''P''(f)lexor surfaces.
** Wickham's striae over surface.
** Oral involvement common
*Sclerosus: itchy white spots typically seen on the vulva of elderly women
---
Lithium is mood stabilising drug used most commonly prophylactically in bipolar disorder but also as an adjunct in refractory depression. It has a very narrow therapeutic range (0.4-1.0 mmol/L) and a long plasma half-life being excreted primarily by the kidneys.
Mechanism of action - not fully understood, two theories:
* interferes with inositol triphosphate formation
* interferes with cAMP formation
Adverse effects
* nausea/vomiting, diarrhoea
* fine tremor
* nephrotoxicity: polyuria, secondary to nephrogenic diabetes insipidus
* thyroid enlargement, may lead to hypothyroidism
* ECG: T wave flattening/inversion
* weight gain
* idiopathic intracranial hypertension
* leucocytosis
* hyperparathyroidism and resultant hypercalcaemia
Monitoring of patients on lithium therapy
* inadequate monitoring of patients taking lithium is common - NICE and the National Patient Safety Agency (NPSA) have issued guidance to try and address this. As a result it is often an exam hot topic
* after starting lithium levels should be performed weekly and after each dose change until concentrations are stable
* once established, lithium blood level should 'normally' be checked every 3 months
* after a change in dose, lithium levels should be taken a week later and 12 hours after the last dose
* thyroid and renal function should be checked every 6 months
* patients should be issued with an information booklet, alert card and record book
---
>LMNOP- effect of Thiazide Diuretics - NSAIDS - ACE inh
>Acne - Wt gain<br>
>Lavu & LYME like(Heart block)-Leucocytosis - Lavu (Wt gain)<br>
>Movement (tremor - hyperreflexia(↑DTRs) - seizures - ataxia)<br>
>Nephrogenic DI (Polyuria)<br>
>hypOtension hypOthyroism<br>
>Pregnancy problems - Parathyroidism(hypercalcemia)
>Idiopathi intracranial Hypertension(also isotretinoin-corticosteroids-tetracyclines)
Lithium is a mood stabilising drug used most commonly prophylactically in bipolar disorder but also as an adjunct in refractory depression. It has a very narrow therapeutic range (0.4-1.0 mmol/L) and a long plasma half-life being excreted primarily by the kidneys. Lithium toxicity generally occurs following concentrations > 1.5 mmol/L.
Toxicity may be precipitated by:
* dehydration
* renal failure
* drugs: diuretics (especially thiazides), ACE inhibitors/angiotensin II receptor blockers, NSAIDs and metronidazole.
Features of toxicity
* coarse tremor (a fine tremor is seen in therapeutic levels)
* hyperreflexia
* acute confusion
* seizure
* coma
Management
* mild-moderate toxicity may respond to volume resuscitation with normal saline
* haemodialysis may be needed in severe toxicity
* sodium bicarbonate is sometimes used but there is limited evidence to support this. By increasing the alkalinity of the urine it promotes lithium excretion
!!!<center>''LIVER ABSCESS''</center>
<hr>
* Severe: Ceftriaxone 1 gm OD/Augmention 1.2gm IV q12h PLUS Metro 500 IV q8h; Severe: Pip/taz 3.375 g IV Q6H
Furosemide and bumetanide are loop diuretics that act by inhibiting the Na-K-Cl cotransporter (NKCC) in the thick ascending limb of the loop of Henle, reducing the absorption of NaCl. There are two variants of NKCC; loop diuretics act on NKCC2, which is more prevalent in the kidneys.
Indications
* heart failure: both acute (usually intravenously) and chronic (usually orally)
* resistant [[HTN]], particularly in patients with renal impairment
Adverse effects
* hypotension
* HypoNatremia
* HypoKalemia, HypoMagnesemia
* hypochloraemic alkalosis
* OtoToxicity
* HypoCalcemia (Hyper with ThiaZide)
* renal impairment (from dehydration + direct toxic effect)
* HyperGlycemia (less common than with thiazides)
* GouT
<hr><center>''LORAZEPAM''</center><hr>
<center>''Adult Dosage''</center><hr>
''Anxiety, sedation, and procedural amnesia:''
* ''Oral:'' 1-10 mg/day in 2-3 divided doses; usual dose: 2-6 mg/day in divided doses or 1-2 mg 1 hour before procedure; I.M.: 0.05 mg/kg administered 2 hours before surgery (maximum: 4 mg/dose); I.V.: 0.044 mg/kg 15-20 minutes before surgery (usual dose 2 mg; maximum: 4 mg/dose)
''Status epilepticus:''
* ''I.V.:'' 4 mg/dose slow I.V. (maximum rate: 2 mg/minute); may repeat in 10-15 minutes; usual maximum dose: 8 mg. May be given I.M, but I.V. preferred.
''Rapid tranquilization of agitated patient: Oral, I.M.:''
* 1-2 mg administered every 30-60 minutes; may be administered with an antipsychotic (eg, haloperidol)
''Agitation in the ICU patient:''
* ''I.V.:'' 0.02-0.06 mg/kg every 2-6 hours or 0.01-0.1 mg/kg/hour
<hr><center>''Pediatric Dosage''</center><hr>
''Anxiety/Sedation''
* ''Infants and Children: Oral, I.V.: Usual:'' 0.05 mg/kg/dose (maximum dose: 2 mg/dose) every 4-8 hours; range: 0.02-0.1 mg/kg
''Sedation (preprocedure)''
* ''Infants and Children: Oral, I.M., I.V.:'' Usual: 0.05 mg/kg; range: 0.02-0.09 mg/kg; ''I.V.:'' May use smaller doses (eg, 0.01-0.03 mg/kg) and repeat every 20 minutes, as needed to titrate to effect
''Status epilepticus:''
* ''I.V.: Infants and Children:'' 0.05-0.1 mg/kg (maximum: 4 mg/dose) slow I.V. over 2-5 minutes (maximum rate: 2 mg/minute); may repeat every 10-15 minutes if needed
!!!<center>''LOWER GI BLEED PROTOCOL''</center>
<hr>
* Obtain type and crossmatch for hemodynamic instability, severe bleeding, or high-risk patient
* CBC, KFT, LFT, PT/INR, ECG in heart Pts, USG abd, CECT Abd if needed
* Nil orally
* Oxygen sos
* Fluid resuscitation Inj NS 500 ml bolus and then 100 ml/hr
* NS bolus if needed
* Inj Cefaxone 1 gm IV OD
* Inj Metrogyl 500 mg IV q8h
* Inj Vit K 5 mg sc daily 5 days
* Inj Perinorm 10 mg/Vomikind 4 mg IV sos q6h
* Initiate appropriate resuscitation (ABC)
* Blood transfusions if Hb ≤7.
* Platelet transfusion if actively bleeding and platelet count < 50,000
* FFP if PT (INR) or APTT of > 1.5 times normal
* Ryles tube aspiration: if bile, no blood then Colonoscopy; if +ve then UGI Endoscopy
* External inspection of the anus and a digital rectal examination
* Anoscopy or proctoscopy
* Colonoscopy or sigmoidoscopy
* PCM 650 mg PO every 4 hr sos fever/pain (not to exceed 4 grams per 24 hrs)
* Syr Cremaffin 30 ml PO sos constipation
* Syr Gelusil MPS 30 ml PO sos heartburn
* Consult for General surgeon
<div id="body_content">
The information below contains selected facts which commonly appear in examinations:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Nerve</b></th><th><b>Motor</b></th><th><b>Sensory</b></th><th><b>Typical mechanism of injury & notes</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="7603">Femoral nerve</span></td><td>Knee extension, thigh flexion</td><td>Anterior and medial aspect of the thigh and lower leg</td><td>Hip and pelvic fractures<br>Stab/gunshot wounds</td></tr><tr><td><span class="concept" data-cid="7604">Obturator nerve</span></td><td>Thigh adduction</td><td>Medial thigh</td><td>Anterior hip dislocation</td></tr><tr><td><span class="concept" data-cid="7605">Lateral cutaneous nerve of the thigh</span></td><td>None</td><td>Lateral and posterior surfaces of the thigh</td><td>Compression of the nerve near the ASIS → meralgia paraesthetica, a condition characterised by pain, tingling and numbness in the distribution of the lateral cutaneous nerve</td></tr><tr><td><span class="concept" data-cid="7606">Tibial nerve</span></td><td>Foot plantarflexion and inversion</td><td>Sole of foot</td><td>Not commonly injured as deep and well protected.<br>Popliteral lacerations, posterior knee dislocation</td></tr><tr><td><span class="concept" data-cid="7607">Common peroneal nerve</span></td><td>Foot dorsiflexion and eversion<br>Extensor hallucis longus</td><td>Dorsum of the foot and the lower lateral part of the leg</td><td>Injury often occurs at the neck of the fibula<br>Tightly applied lower limb plaster cast<br><br>Injury causes foot drop</td></tr><tr><td><span class="concept" data-cid="7608">Superior gluteal nerve</span></td><td>Hip abduction</td><td>None</td><td>Misplaced intramuscular injection<br>Hip surgery<br>Pelvic fracture<br>Posterior hip dislocation<br><br><b>Injury results in a positive Trendelenburg sign</b></td></tr><tr><td><span class="concept" data-cid="7609">Inferior gluteal nerve</span></td><td>Hip extension and lateral rotation</td><td>None</td><td>Generally injured in association with the sciatic nerve<br><br>Injury results in difficulty rising from seated position. Can't jump, can't climb stairs</td></tr></tbody></table></div></div>
<div id="body_content">
Long QT syndrome (LQTS) is an inherited condition associated with delayed repolarization of the ventricles. It is important to recognise as it may lead to ventricular tachycardia/<span class="concept" data-cid="9465">torsade de pointes</span> and can therefore cause collapse/sudden death. The most common variants of LQTS (LQT1 & LQT2) are caused by defects in the alpha subunit of the slow delayed rectifier <span class="concept" data-cid="504">potassium channel</span>. A normal corrected QT interval is less than 430 ms in males and 450 ms in females.<br><br>Causes of a prolonged QT interval:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Congenital</b></th><th><b>Drugs*</b></th><th><b>Other</b></th></tr></thead><tbody><tr><td><ul><li><span class="concept" data-cid="8129">Jervell-Lange-Nielsen syndrome</span> (includes deafness and is due to an abnormal potassium channel)</li><li><span class="concept" data-cid="8128">Romano-Ward syndrome</span> (no deafness)</li></ul></td><td><li>amiodarone, <span class="concept" data-cid="1609">sotalol</span>, class 1a antiarrhythmic drugs</li><li>tricyclic antidepressants, selective serotonin reuptake inhibitors (especially <span class="concept" data-cid="2416">citalopram</span>)</li><li><span class="concept" data-cid="505">methadone</span></li><li>chloroquine</li><li>terfenadine**</li><li><span class="concept" data-cid="7889">erythromycin</span></li><li><span class="concept" data-cid="5268">haloperidol</span></li><li><span class="concept" data-cid="7495">ondanestron</span></li></td><td><li>electrolyte: <span class="concept" data-cid="5638">hypocalcaemia</span>, <span class="concept" data-cid="3335">hypokalaemia</span>, hypomagnesaemia</li><li><span class="concept" data-cid="8125">acute myocardial infarction</span></li><li>myocarditis</li><li><span class="concept" data-cid="8126">hypothermia</span></li><li><span class="concept" data-cid="8127">subarachnoid haemorrhage</span></li></td></tr></tbody></table></div><br>Features<br><ul><li>may be picked up on routine ECG or following family screening</li><li>Long QT1 - usually associated with exertional syncope, often swimming</li><li>Long QT2 - often associated with syncope occurring following emotional stress, exercise or auditory stimuli</li><li>Long QT3 - events often occur at night or at rest</li><li>sudden cardiac death</li></ul><br>Management<br><ul><li>avoid drugs which prolong the QT interval and other precipitants if appropriate (e.g. Strenuous exercise)</li><li>beta-blockers***</li><li>implantable cardioverter defibrillators in high risk cases</li></ul><br>*the usual mechanism by which drugs prolong the QT interval is <span class="concept" data-cid="504">blockage of potassium channels</span>. See the link for more details<br><br>**a non-sedating antihistamine and classic cause of prolonged QT in a patient, especially if also taking P450 enzyme inhibitor, e.g. Patient with a cold takes terfenadine and erythromycin at the same time<br><br>***note sotalol may exacerbate long QT syndrome</div>
---
>romaNO ward
*NO Deafness compared to Jervell-Lange-Nielsen
---
!!!<center>''LUMBAR PUNCTURE''
<iframe width="645" height="484" src="https://www.youtube.com/embed/CKLpIDhuJrE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<div id="notecontent">Lumbar spinal stenosis is a condition in which the central canal is narrowed by tumour, disk prolapse or other similar degenerative changes. <br><br>Patients may present with a combination of back pain, neuropathic pain and symptoms mimicking <span class="concept" data-cid="10560">claudication</span>. One of the main features that may help to differentiate it from true claudication in the history is the positional element to the pain. <span id="concept_popover_id_2367" class="concept concept-3-u trigger-link" data-cid="2367" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2367'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating2367' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(10,255,0)'>Importance: <b>98</b></span> </div>" data-original-title="Spinal stenosis is often relieved by sitting down or leaning forward">Sitting is better than standing and patients may find it easier to walk uphill rather than downhill</span>. The neurogenic claudication type history makes lumbar spinal stenosis a likely underlying diagnosis, the absence of such symptoms makes it far less likely. <br><br><b>Pathology</b><br><br>Degenerative disease is the commonest underlying cause. Degeneration is believed to begin in the intervertebral disk where biochemical changes such as cell death and loss of proteoglycan and water content lead to progressive disk bulging and collapse. This process leads to an increased stress transfer to the posterior facet joints, which accelerates cartilaginous degeneration, hypertrophy, and osteophyte formation; this is associated with thickening and distortion of the ligamentum flavum. The combination of the ventral disk bulging, osteophyte formation at the dorsal facet, and ligamentum flavum hyptertrophy combine to circumferentially narrow the spinal canal and the space available for the neural elements. The compression of the nerve roots of the cauda equina leads to the characteristic clinical signs and symptoms of lumbar spinal stenosis.<br><br><b>Diagnosis</b><br><br><span class="concept" data-cid="1719">MRI scanning</span> is the best modality for demonstrating the canal narrowing. Historically a bicycle test was used as true vascular claudicants could not complete the test.<br><br><b>Treatment</b><br><br>Laminectomy</div>
!!!<center>''LUNG ABSCESS/EMPYEMA''</center>
<hr>
* Pip-Taz 4.5 q8h OR Cefoperazone-sulb 3 gm IV q12h PLUS Clinda 600-900 IV q8h
* Pip/taz 4.5 q8h IV OR Clinda 600 mg IV Q8H OR Clinda 300 TDS 2 wks OR Levoflox 500/Moxiflox 400 OD 1-2 wks
!!Drugs Causing Lung Fibrosis
Causes
* AmioDarone
* cytotoxic agents: busulphan, bleomycin
* anti-rheumatoid drugs: methotrexate, sulfasalazine
* NitroFurantoin
* ergot-derived dopamine receptor agonists (bromocriptine, cabergoline, pergolide)
---
>FIBROSIS in RA
*RA + Pneumoconiosis = CaPlan syndrome (nodules, infl, SCARRING)
*Treatment with MethoTrexate or SulfaSalazine = Fibrosis
---
<div id="notecontent">Lower urinary tract symptoms (LUTS) in men are very common and are present in the majority of men aged > 50 years. They are most commonly secondary to benign prostatic hyperplasia but other causes should be considered including prostate cancer.<br><br>It is useful to classify the symptoms into 3 broad groups.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Voiding</th><th>Storage</th><th>Post-micturition</th></tr></thead><tbody><tr><td>Hesitancy<br>Poor or intermittent stream<br>Straining<br>Incomplete emptying<br>Terminal dribbling</td><td>Urgency<br>Frequency<br>Nocturia<br>Urinary incontinence</td><td>Post-micturition dribbling<br>Sensation of incomplete emptying</td></tr></tbody></table></div> <br><br>Examination<br><ul><li>urinalysis: exclude infection, check for haematuria</li><li>digital rectal examination: size and consistency of prostate</li><li>a PSA test may be indicated, but the patient should be properly counselled first</li></ul><br>It is useful to get the patient to complete the following to guide management:<br><ul><li>urinary frequency-volume chart: distinguish between urinary frequency, polyuria, nocturia, and nocturnal polyuria.</li><li>International Prostate Symptom Score (IPSS): assess the impact on the patient's life. This classifies the symptoms as mild, moderate or severe</li></ul><br><b>Management</b><br><br>Predominately voiding symptoms<br><ul><li>conservative measures include: pelvic floor muscle training, bladder training, prudent fluid intake and containment products </li><li>if 'moderate' or 'severe' symptoms offer an alpha-blocker</li><li>if the prostate is enlarged and the patient is 'considered at high risk of progression' then a 5-alpha reductase inhibitor should be offered</li><li>if the patient has an enlarged prostate and 'moderate' or 'severe' symptoms offer both an alpha-blocker and 5-alpha reductase inhibitor</li><li>if there are mixed symptoms of voiding and storage not responding to an alpha blocker then a antimuscarinic (anticholinergic) drug may be added</li></ul><br>Predominately overactive bladder<br><ul><li>conservative measures include moderating fluid intake</li><li>bladder retraining should be offered</li><li>antimuscarinic drugs should be offered if symptoms persist. NICE recommend oxybutynin (immediate release), tolterodine (immediate release), or darifenacin (once daily preparation)</li><li>mirabegron may be considered if first-line drugs fail</li></ul><br>Nocturia<br><ul><li>advise about moderating fluid intake at night</li><li>furosemide 40mg in late afternoon may be considered</li><li>desmopressin may also be helpful</li></ul></div>
<div id="body_content">
Early features<br><ul><li><span class="concept" data-cid="3877">erythema migrans</span> <ul><li>small papule often at site of the tick bite which develops into a larger annular lesion with central clearing, 'bulls-eye'.</li><li>occurs in 70% of patients</li></ul></li><li><span class="concept" data-cid="10217">systemic symptoms</span>: malaise, fever, arthralgia</li></ul><br>Later features<br><ul><li>CVS: heart block, myocarditis</li><li>neurological: cranial nerve palsies, meningitis</li><li>polyarthritis</li></ul></div>
---
<div id="notecontent">Lyme disease is caused by the spirochaete <span class="concept" data-cid="7857"><i>Borrelia burgdorferi</i></span> and is spread by ticks.<br><br>Features<br><ul><li>early: <span class="concept" data-cid="7858">erythema chronicum migrans ('bulls-eye') rash is seen in around 80%</span>. Systemic features include fever, arthralgia</li><li>cardiovascular: <span class="concept" data-cid="4906">heart block</span>, myocarditis</li><li>neurological: <span class="concept" data-cid="3575">facial nerve palsy</span>, meningitis</li></ul><br>Investigation<br><ul><li>NICE recommend that <span class="concept" data-cid="10589">Lyme disease can be diagnosed clinically if erythema migrans is present</span><ul><li>erythema migrans is therefore an indication to start antibiotics</li></ul></li><li>enzyme-linked immunosorbent assay <span id="concept_popover_id_5816" class="concept concept-3-u trigger-link" data-cid="5816" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5816'>You've answered questions on this concept 2 times:<ul><li>just now: <i class='fa fa-check' style='color:green'></i></li><li>3 weeks ago: <i class='fa fa-check' style='color:green'></i></li></ul></div><br><div id='div_concept_rating5816' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(137,255,0)'>Importance: <b>73</b></span> </div>" data-original-title="ELISA is the first-line investigation for suspected Lyme disease in patients with no history of erythema migrans">(ELISA) antibodies to <i>Borrelia burgdorferi</i> are the first-line test</span><ul><li>if negative and Lyme disease is still suspected in people tested within 4 weeks from symptom onset, <span class="concept" data-cid="10469">repeat the ELISA 4-6 weeks</span> after the first ELISA test. If still suspected in people who have had symptoms for 12 weeks or more then an immunoblot test should be done</li><li><span class="concept" data-cid="9530">if positive or equivocal then an immunoblot test for Lyme disease should be done</span></li></ul></li></ul><br>Management of <span class="concept" data-cid="5815">asymptomatic tick bites</span><br><ul><li>tick bites can be a relatively common presentation to GP practices, and can cause significant anxiety</li><li>NICE guidance does not recommend routine antibiotic treatment to patients who've suffered a tick bite</li></ul><br>Management of suspected/confirmed Lyme disease<br><ul><li><span id="concept_popover_id_3876" class="concept concept-3-u trigger-link" data-cid="3876" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3876'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating3876' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(152,255,0)'>Importance: <b>70</b></span> </div>" data-original-title="First line treatment for early Lyme disease is a 14-21 day course of oral doxycycline">doxycycline</span> if early disease. <span id="concept_popover_id_2864" class="concept concept-0 trigger-link" data-cid="2864" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2864'>You've never been tested on this concept</div><br><div id='div_concept_rating2864' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(239,255,0)'>Importance: <b>53</b></span> </div>" data-original-title="Amoxicillin is an alternative to treat early Lyme disease if doxycycline is contraindicated such as in pregnancy">Amoxicillin is an alternative if doxycycline is contraindicated (e.g. pregnancy)</span><ul><li><span class="concept" data-cid="10246">people with erythema migrans should be commenced on antibiotic without the need for further tests</span></li></ul></li><li><span class="concept" data-cid="8319">ceftriaxone</span> if disseminated disease</li><li>Jarisch-Herxheimer reaction is sometimes seen after initiating therapy: fever, rash, tachycardia after first dose of antibiotic (more commonly seen in syphilis, another spirochaetal disease)</li></ul></div>
---
!!!<center>''LYME DISEASE''</center>
<hr>
* ''Erythema migrans (early disease)''
* Doxycycline 100 mg PO bid x 10 to 21 d
* or Amoxicillin 500 mg PO tid x 14 to 21 d
* or Cefuroxime axetil 500 mg PO bid x 14 to 21 d
* ''Neurologic disease''
* ''Isolated facial nerve palsy'' (early disseminated disease)
* Doxycycline 100 mg PO bid x 14 to 28 d
* ''More serious disease'' (eg, meningitis, radiculopathy, encephalitis) (early or late disseminated disease)
* Ceftriaxone 2 g IV once daily x 28 d
* ''Carditis''
* ''Mild'' (first-degree atrioventricular block with PR interval <300 milliseconds)
* Doxycycline 100 mg PO bid x 21 d
* or Amoxicillin 500 mg PO tid x 21 d
* or Cefuroxime axetil 500 mg PO bid x 21 d
* ''More serious disease'' (symptomatic, second- or third-degree atrioventricular block, first-degree atrioventricular block with PR interval ≧300 milliseconds)
* Ceftriaxone 2 g once/day IV x 21 to 28 d
* ''Arthritis without neurologic disease''
* Doxycycline 100 mg PO bid x 28 d
* or Amoxicillin 500 mg PO tid x 28 d
* ''Arthritis with neurologic disease''
* Ceftriaxone 2 g IV once/day x 28 d
* ''Recurrent arthritis'' (despite adequate prior oral therapy)
* Ceftriaxone 2 g IV once/day x 14 to 28 d
* or Doxycycline 100 mg PO bid x 28 d
* or Amoxicillin 500 mg PO tid x 28 d
* ''Acrodermatitis chronica atrophicans''
* Doxycycline 100 mg PO bid x 21 d
* or Amoxicillin 500 mg PO tid x 21 d
* or Cefuroxime 500 mg PO bid x 21 d
* ''Alternative but less effective therapy'' for patients unable to tolerate preferred regimens, Azithromycin in adults: 500 mg once daily, in children: 10 mg/kg per day x 7-10 days or Clarithromycin in adults: 500 mg twice daily, in children: 7.5 mg/kg twice per day x 14-21 days, or erythromycin in adults: 500 mg four times daily, in children: 12.5 mg/kg four times daily x 14-21 days.
!!Macrocytic anaemia
can be divided into causes associated with a megaloblastic bone marrow and those with a normoblastic bone marrow
|!Megaloblastic causes|!Normoblastic causes|
|vitamin B12 deficiency<br>folate deficiency|alcohol<br>liver disease<br>hypothyroidism<br>pregnancy<br>reticulocytosis<br>myelodysplasia<br>drugs: cytotoxics|
---
>DRUNK PREGNANT using CYTOTOXIC DRUGS is TRAPPED in the BIG MAYALO NET
*Alcohol - Liver dis
*Hypothyroid - Pregnancy
*Reticulocytosis-Myelodysplasia
*Cytotoxic drugs
---
<div id="body_content">
Erythromycin was the first macrolide used clinically. Newer examples include clarithromycin and azithromycin.<br><br><span class="concept" data-cid="4118">Macrolides act by inhibiting bacterial protein synthesis by blocking translocation</span>. If pushed to give an answer they are bacteriostatic in nature, but in reality this depends on the dose and type of organism being treated.<br><br>Mechanism of resistance<br><ul><li>post-transcriptional methylation of the 23S bacterial ribosomal RNA</li></ul><br>Adverse effects<br><ul><li><span class="concept" data-cid="10946">prolongation of the QT interval</span></li><li>gastrointestinal side-effects are common. Nausea is less common with clarithromycin than erythromycin</li><li><span class="concept" data-cid="1984">cholestatic jaundice</span>: risk may be reduced if erythromycin stearate is used</li><li><span class="concept" data-cid="5560">P450 inhibitor</span> (see below)</li><li><span class="concept" data-cid="10637">azithromycin is associated with hearing loss and tinnitus</span></li></ul><br>Common interactions<br><ul><li>statins should be stopped whilst taking a course of macrolides. Macrolides inhibit the cytochrome P450 isoenzyme CYP3A4 that metabolises statins. Taking macrolides concurrently with statins significantly increases the risk of myopathy and rhabdomyolysis.</li></ul></div>
!!Age-related macular degeneration
is the most common cause of blindness in the UK. Degeneration of the central retina (macula) is the key feature with changes usually bilateral. ARMD is characterised by degeneration of retinal photoreceptors that results in the formation of drusen which can be seen on fundoscopy and retinal photography.
<center>
<img width=400 height=360 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img073.jpg">
</center>
<center>
<b>Drusen in Macula</b></center>
Traditionally two forms of macular degeneration are seen:
* dry (90% of cases, geographic atrophy) macular degeneration: characterised by drusen - yellow round spots in Bruch's membrane
* wet (10% of cases, exudative, neovascular) macular degeneration: characterised by choroidal neovascularisation. Leakage of serous fluid and blood can subsequently result in a rapid loss of vision. Carries worst prognosis
Recently there has been a move to a more updated classification:
* early age-related macular degeneration (non-exudative, age-related maculopathy): drusen and alterations to the retinal pigment epithelium (RPE)
* late age-related macular degeneration (neovascularisation, exudative)
Age-related macular degeneration (ARMD) is the commonest cause of visual loss in elderly persons in the developed world. It affects 30-50 million people worldwide.
Epidemiology
* population estimates suggest a male to female ratio of 1:2
* the average age of presentation is greater than 70 years of age
Risk factors
* Advancing age itself is the greatest risk factor for ARMD. The risk of ARMD increases 3 fold for patients aged older than 75 years, versus those aged 65-74.
* Smoking is another key risk factor in the development of ARMD, current smokers are twice as likely as non-smokers to have ARMD related visual loss, and ex-smokers have a slightly increased risk of developing the condition, (OR 1.13).
* Family history is also a strong risk factor for developing ARMD. First degree relatives of a sufferer of ARMD are thought to be four times more likely to inherit the condition.
* Other risk factors for developing the condition include those associated with increased risk of ischaemic cardiovascular disease, such as hypertension, dyslipidaemia and diabetes mellitus.
Patients typically present with a subacute onset of visual loss with:
* a reduction in visual acuity, particularly for near field objects
* difficulties in dark adaptation with an overall deterioration in vision at night
* fluctuations in visual disturbance which may vary significantly from day to day
* they may also suffer from photopsia, (a perception of flickering or flashing lights), and glare around objects
Signs:
* distortion of line perception may be noted on Amsler grid testing
* fundoscopy reveals the presence of drusen, yellow areas of pigment deposition in the macular area, which may become confluent in late disease to form a macular scar.
* in wet ARMD well demarcated red patches may be seen which represent intra-retinal or sub-retinal fluid leakage or haemorrhage.
Investigations:
* slit-lamp microscopy is the initial investigation of choice, to identify any pigmentary, exudative or haemorrhagic changes affecting the retina which may identify the presence of ARMD. This is usually accompanied by colour fundus photography to provide a baseline against which changes can be identified over time.
* fluorescein angiography is utilised if neovascular ARMD is suspected, as this can guide intervention with anti-VEGF therapy. This may be complemented with indocyanine green angiography to visualise any changes in the choroidal circulation.
* ocular coherence tomography is used to visualise the retina in three dimensions, because it can reveal areas of disease which aren't visible using microscopy alone.
Treatment:
* the AREDS trial examined the treatment of dry ARMD in 3640 subjects. It showed that a combination of zinc with anti-oxidant vitamins A,C and E reduced progression of the disease by around one third. Patients with more extensive drusen seemed to benefit most from the intervention. Treatment is therefore recommended in patients with at least moderate category dry ARMD.
* Vascular endothelial growth factor, (VEGF) is a potent mitogen and drives increased vascular permeability in patients with wet ARMD. A number of trials have shown that use of anti-VEGF agents can limit progression of wet ARMD and stabilise or reverse visual loss. Evidence suggests that they should be instituted within the first two months of diagnosis of wet ARMD if possible. Examples of anti-VEGF agents include ranibizumab, bevacizumab and pegaptanib,. The agents are usually administered by 4 weekly injection.
* Laser photocoagulation does slow progression of ARMD where there is new vessel formation, although there is a risk of acute visual loss after treatment, which may be increased in patients with sub-foveal ARMD. For this reason anti-VEGF therapies are usually preferred.
---
>DRY DRUsen - WET Neovascularization
The most common cause of non-falciparum malaria is Plasmodium vivax, with Plasmodium ovale and Plasmodium malariae accounting for the other cases. Plasmodium vivax is often found in Central America and the Indian Subcontinent whilst Plasmodium ovale typically comes from Africa.
Plasmodium knowlesi is another non-falciparum species which causes clinical pathology, found predominantly in South East Asia.
Features
* general features of malaria: fever, headache, splenomegaly
* Plasmodium vivax/ovale: cyclical fever every 48 hours. Plasmodium malariae: cyclical fever every 72 hours
* Plasmodium malariae: is associated with nephrotic syndrome.
Ovale and vivax malaria have a hypnozoite stage and may therefore relapse following treatment.
Treatment
* in areas which are known to be chloroquine-sensitive then WHO recommend either an artemisinin-based combination therapy (ACT) or chloroquine
* in areas which are known to be chloroquine-resistant an ACT should be used
* ACTs should be avoided in pregnant women
* patients with ovale or vivax malaria should be given primaquine following acute treatment with chloroquine to destroy liver hypnozoites and prevent relapse
<div id="notecontent">There are around 1,500-2,000 cases each year of malaria in patients returning from endemic countries. The majority of these cases (around 75%) are caused by the potentially fatal <i><i>Plasmodium</i> falciparum</i> protozoa. The majority of patients who develop malaria did not take prophylaxis. It should also be remembered that UK citizens who originate from malaria endemic areas quickly lose their innate immunity.<br><br>Up-to-date charts with recommended regimes for malarial zones should be consulted prior to prescribing<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Side-effects + notes</b></th><th><b>Time to begin before travel</b></th><th><b> Time to end after travel</b></th></tr></thead><tbody><tr><td>Atovaquone + proguanil (Malarone)</td><td><span class="concept" data-cid="6384">GI upset</span></td><td>1 - 2 days</td><td><span class="concept" data-cid="6383">7 days</span></td></tr><tr><td>Chloroquine</td><td>Headache<br><br><span class="concept" data-cid="7897">Contraindicated in epilepsy</span><br>Taken weekly</td><td>1 week</td><td>4 weeks</td></tr><tr><td>Doxycycline</td><td>Photosensitivity<br>Oesophagitis</td><td>1 - 2 days</td><td>4 weeks</td></tr><tr><td>Mefloquine (Lariam)</td><td>Dizziness<br>Neuropsychiatric disturbance<br><br>Contraindicated in epilepsy<br>Taken weekly</td><td>2 - 3 weeks</td><td>4 weeks</td></tr><tr><td>Proguanil (Paludrine)</td><td></td><td>1 week</td><td>4 weeks</td></tr><tr><td>Proguanil + chloroquine</td><td>See above</td><td>1 week</td><td>4 weeks</td></tr></tbody></table></div><br>Pregnant women should be advised to avoid travelling to regions where malaria is endemic. Diagnosis can also be difficult as parasites may not be detectable in the blood film due to placental sequestration. However, if travel cannot be avoided:<br><ul><li>chloroquine can be taken</li><li>proguanil: folate supplementation (5mg od) should be given</li><li>Malarone (atovaquone + proguanil): the BNF advises to avoid these drugs unless essential. If taken then folate supplementation should be given</li><li>mefloquine: caution advised</li><li>doxycycline is contraindicated</li></ul><br>It is again advisable to avoid travel to malaria endemic regions with children if avoidable. However, if travel is essential then children should take malarial prophylaxis as they are more at risk of serious complications.<br><ul><li>diethyltoluamide (DEET) 20-50% has been shown to repel up to 100% of mosquitoes if used correctly. It can be used in children over 2 months of age*</li><li>doxycycline is only licensed in the UK for children over the age of 12 years</li></ul><br>*A BMJ review (BMJ 2015; 350:h99) suggest DEET could also be used in breastfeeding women and pregnant women in their 2nd or 3rd trimester</div>
!!Malignant melanoma: prognostic factors
The invasion depth of a tumour (Breslow depth) is the single most important factor in determining prognosis of patients with malignant melanoma
|!Breslow Thickness|!Approximate 5 year survival|
|< 1 mm|95-100%|
|1 - 2 mm|80-96%|
|2.1 - 4 mm|60-75%|
|> 4 mm|50%|
Also known as the Marcus-Gunn pupil, a relative afferent pupillary defect is found by the 'swinging light test'. It is caused by a lesion anterior to the optic chiasm i.e. optic nerve or retina
Finding
* the affected and normal eye appears to dilate when light is shone on the affected
Causes
* retina: detachment
* optic nerve: optic neuritis e.g. multiple sclerosis
Pathway of pupillary light reflex
* afferent: retina → optic nerve → lateral geniculate body → midbrain
* efferent: Edinger-Westphal nucleus (midbrain) → oculomotor nerve
!!Marfan's syndrome
is an autosomal dominant connective tissue disorder. It is caused by a defect in the FBN1 gene on chromosome 15 that codes for the protein fibrillin-1. It affects around 1 in 3,000 people.
Features
* tall stature with arm span to height ratio > 1.05
* high-arched palate
* arachnodactyly
* pectus excavatum
* pes planus
* scoliosis of > 20 degrees
* heart: dilation of the aortic sinuses (seen in 90%) which may lead to aortic aneurysm, aortic dissection, aortic regurgitation, mitral valve prolapse (75%),
* lungs: repeated pneumothoraces
* eyes: upwards lens dislocation (superotemporal ectopia lentis), blue sclera, myopia
* dural ectasia (ballooning of the dural sac at the lumbosacral level)
The life expectancy of patients used to be around 40-50 years. With the advent of regular echocardiography monitoring and beta-blocker/ACE-inhibitor therapy this has improved significantly over recent years. Aortic dissection and other cardiovascular problems remain the leading cause of death however.
McCune-Albright syndrome is not inherited, it is due to a random, somatic mutation in the GNAS gene.
Features
* precocious puberty
* cafe-au-lait spots
* polyostotic fibrous dysplasia
* short stature
<div id="body_content">
Measles is now rarely seen in the developed world following the adoption of immunisation programmes. Outbreaks are occasionally seen, particularly when vaccinations rates drop, for example after the MMR controversy of the early 2000s.<br><br>Overview<br><ul><li><span class="concept" data-cid="5522">RNA paramyxovirus</span></li><li>spread by droplets</li><li>infective from prodrome until 4 days after rash starts </li><li>incubation period = 10-14 days</li></ul><br><span class="concept" data-cid="3941">Features</span><br><ul><li>prodrome: irritable, conjunctivitis, fever</li><li>Koplik spots (before rash): white spots ('grain of salt') on buccal mucosa</li><li>rash: starts behind ears then to whole body, discrete maculopapular rash becoming blotchy & confluent</li></ul><br>
<center>
<img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd100.jpg">
</center>
<center>
Koplik spots
</center>
<br>Investigations<br><ul><li>IgM antibodies can be detected within a few days of rash onset</li></ul><br>Management<br><ul><li>mainly supportive</li><li>admission may be considered in immunosuppressed or pregnant patients</li><li>notifiable disease → inform public health</li></ul><br>Complications<br><ul><li><span class="concept" data-cid="7261">otitis media</span>: the most common complication</li><li><span class="concept" data-cid="9075">pneumonia</span>: the most common cause of death</li><li><span class="concept" data-cid="9074">encephalitis</span>: typically occurs 1-2 weeks following the onset of the illness)</li><li><span class="concept" data-cid="9073">subacute sclerosing panencephalitis</span>: very rare, may present 5-10 years following the illness</li><li>febrile convulsions</li><li>keratoconjunctivitis, corneal ulceration</li><li>diarrhoea</li><li>increased incidence of appendicitis</li><li>myocarditis</li></ul><br>
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd101.jpg"></center>
<center>
The rash typically starts behind the ears and then spreads to the whole body
</center>
<br>Management of contacts<br><ul><li>if a child not immunized against measles comes into contact with measles then MMR should be offered (vaccine-induced measles antibody develops more rapidly than that following natural infection)</li><li>this should be given within 72 hours</li></ul></div>
---
>Rash starts on the back of EARS
*Otitis media is a complication along with Pneumonia, Meningitis, Subacute sclerosing panencephalitis
---
|1 mg = 1000 mcg|
|1 L = 1000 ml|
|5 ml = 1 Tsp|
|15 ml = 1 Tbsp|
|1 kg = 1000 gm|
|1 gm = 1000 mg|
|1 ml = 1 cc|
|30 ml = 1 Oz|
|8 Oz = 1 Cup|
|1 ml = 20 dps = 20 micro dps|
<div id="body_content">
Meckel's diverticulum is a congenital diverticulum of the small intestine. It is a remnant of the omphalomesenteric duct (also called the vitellointestinal duct) and contains ectopic ileal, gastric or pancreatic mucosa<br><br><span class="concept" data-cid="301">Rule of 2s</span><br><ul><li>occurs in 2% of the population</li><li>is 2 feet from the ileocaecal valve</li><li>is 2 inches long</li></ul><br>Presentation (usually asymptomatic)<br><ul><li>abdominal pain mimicking appendicitis</li><li>rectal bleeding<ul><li>Meckel's diverticulum is the <span class="concept" data-cid="300">most common cause of painless massive GI bleeding requiring a transfusion in children between the ages of 1 and 2 years</span></li></ul></li><li>intestinal obstruction<ul><li>secondary to an omphalomesenteric band (most commonly), volvulus and intussusception</li></ul></li></ul><br>Management<br><ul><li>removal if narrow neck or symptomatic. Options are between wedge excision or formal small bowel resection and anastomosis.</li></ul><br><br>Pathophysiology<br><ul><li>normally, in the foetus, there is an attachment between the vitellointestinal duct and the yolk sac. This disappears at 6 weeks gestation</li><li>the tip is free in the majority of cases</li><li>associated with enterocystomas, umbilical sinuses, and omphaloileal fistulas.</li><li>arterial supply: omphalomesenteric artery. </li><li>typically lined by ileal mucosa but ectopic gastric mucosa can occur, with the risk of peptic ulceration. Pancreatic and jejunal mucosa can also occur.</li></ul></div>
Meconium aspiration syndrome refers to respiratory distress in the newborn as a result of meconium in the trachea. It occurs in the immediate neonatal period. It is more common in post-term deliveries, with rates of up to 44% reported in babies born after 42 weeks. It causes respiratory distress, which can be severe. Higher rates occur where there is a history of maternal hypertension, pre-eclampsia, chorioamnionitis, smoking or substance abuse.
* Meconium ileus is a rare condition affecting only 1 per 25,000 live births.
* HirschSprung is most common cause of newborn intestinal obstruction with an incidence of around 1.65 per 10,000 live births, with a male to female ratio of 2:1.
!!!<center>''MEDIASTINITIS''</center>
<hr>
* Augmentin 625 TDS 2 wks OR Levoflox 750/Moxiflox 400 OD 1-2 wks
Mefloquine (brand name Lariam) is used for both the prophylaxis and treatment of certain types of malaria. There has long been a concern about the neuropsychiatric side-effects of mefloquine. A recent review has however led to 'strengthened warnings' about the potential risks.
The following advice is therefore given:
* certain side-effects such nightmares or anxiety may be 'prodromal' of a more serious neuropsychiatric event
* suicide and deliberate self harm have been reported in patients taking mefloquine
* adverse reactions may continue for several months due to the long half-life or mefloquine
* mefloquine should not be used in patients with a history of anxiety, depression schizophrenia or other psychiatric disorders
* patients who experience neuropsychiatric sife-effects should stop mefloquine and seek medical advice
---
>Mefloquine Mind Sidefx
---
!!Meglitinides
<div id="body_content">
Meglitinides (e.g. repaglinide, nateglinide)<br><ul><li><span class="concept" data-cid="9351">increase pancreatic insulin secretion</span></li><li>like sulfonylureas they <span class="concept" data-cid="9350">bind to an ATP-dependent K<sup>+</sup>(K<sub>ATP</sub>) channel on the cell membrane of pancreatic beta cells</span></li><li>often used for patients with an erratic lifestyle</li><li>adverse effects include <span class="concept" data-cid="9353">weight gain</span> and <span class="concept" data-cid="9352">hypoglycaemia</span> (less so than sulfonylureas)</li></ul></div>
---
>ERRATIC NATAlie RAPE
*ERRATIC life style - NATEglinide - REPAglinide - Less Wt gain and hypoglycemia compared to SulfonylUrea
---
Melanosis coli is a disorder of pigmentation of the bowel wall. Histology demonstrates pigment-laden macrophages
It is associated with laxative abuse, especially `anthraquinone compounds such as senna`
<div id="body_content">
The table below summarises the three main types of multiple endocrine neoplasia (MEN). MEN is inherited as an autosomal dominant disorder.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b><span class="concept" data-cid="8261">MEN type I</span></b></th><th><b><span class="concept" data-cid="8262">MEN type IIa</span></b></th><th><b><span class="concept" data-cid="8263">MEN type IIb</span></b></th></tr></thead><tbody><tr><td><div class="alert alert-warning">3 <b>P</b>'s</div><b>P</b>arathyroid (95%): hyperparathyroidism due to parathyroid hyperplasia<br><b>P</b>ituitary (70%)<br><b>P</b>ancreas (50%): e.g. insulinoma, gastrinoma (leading to recurrent peptic ulceration)<br><br>Also: adrenal and thyroid</td><td>Medullary thyroid cancer (70%) <br><br><div class="alert alert-warning">2 <b>P</b>'s</div><b>P</b>arathyroid (60%)<br><b>P</b>haeochromocytoma<br><br></td><td>Medullary thyroid cancer<br><br><div class="alert alert-warning">1 <b>P</b></div><b>P</b>haeochromocytoma<br><br>Marfanoid body habitus<br>Neuromas</td></tr><tr><td>MEN1 gene<br><br>Most common presentation = hypercalcaemia</td><td>RET oncogene</td><td>RET oncogene</td></tr></tbody></table></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd906b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd906.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd906b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Venn diagram showing the different types of MEN and their associated features</div></div>
<div id="notecontent">Meniere's disease is a disorder of the inner ear of unknown cause. It is characterised by excessive pressure and progressive dilation of the endolymphatic system. It is more common in middle-aged adults but may be seen at any age. Meniere's disease has a similar prevalence in both men and women.<br><br>Features<br><ul><li>recurrent episodes of vertigo, tinnitus and hearing loss (sensorineural). Vertigo is usually the prominent symptom</li><li>a sensation of aural fullness or pressure is now recognised as being common</li><li>other features include nystagmus and a positive Romberg test</li><li>episodes last minutes to hours</li><li>typically symptoms are unilateral but bilateral symptoms may develop after a number of years</li></ul><br>Natural history<br><ul><li>symptoms resolve in the majority of patients after 5-10 years</li><li>the majority of patients will be left with a degree of hearing loss</li><li>psychological distress is common</li></ul><br>Management<br><ul><li>ENT assessment is required to confirm the diagnosis</li><li>patients should inform the DVLA. The current advice is to cease driving until satisfactory control of symptoms is achieved</li><li>acute attacks: buccal or intramuscular prochlorperazine. Admission is sometimes required</li><li>prevention: betahistine and vestibular rehabilitation exercises may be of benefit</li></ul></div>
;Neonatal to 3 months
* Group B Streptococcus: usually acquired from the mother at birth. More common in low birth weight babies and following prolonged rupture of the membranes
* E. coli and other Gram -ve organisms
* Listeria monocytogenes
;1 month to 6 years
* Neisseria meningitidis (meningococcus)
* Streptococcus pneumoniae (pneumococcus)
* Haemophilus influenzae
;Greater than 6 years
* Neisseria meningitidis (meningococcus)
* Streptococcus pneumoniae (pneumococcus)
---
<div id="notecontent">Investigations suggested by NICE<br><ul><li>full blood count</li><li>CRP</li><li>coagulation screen</li><li>blood culture</li><li>whole-blood PCR</li><li>blood glucose</li><li>blood gas</li></ul><br>Lumbar puncture if no signs of raised intracranial pressure<br><br><b>Management</b><br><br>All patients should be transferred to hospital urgently. If patients are in a pre-hospital setting (for example a GP surgery) and meningococcal disease is suspected then intramuscular benzylpenicillin may be given, as long as this doesn't delay transit to hospital.<br><br>BNF recommendations on antibiotics<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Scenario</b></th><th><b>BNF recommendation</b></th></tr></thead><tbody><tr><td>Initial empirical therapy aged < 3 months</td><td>Intravenous cefotaxime + amoxicillin</td></tr><tr><td>Initial empirical therapy aged 3 months - 50 years</td><td>Intravenous cefotaxime*</td></tr><tr><td>Initial empirical therapy aged > 50 years</td><td>Intravenous cefotaxime + amoxicillin</td></tr><tr><td>Meningococcal meningitis</td><td>Intravenous benzylpenicillin or cefotaxime</td></tr><tr><td>Pneuomococcal meningitis</td><td>Intravenous cefotaxime</td></tr><tr><td>Meningitis caused by <i>Haemophilus influenzae</i></td><td>Intravenous cefotaxime</td></tr><tr><td>Meningitis caused by Listeria</td><td>Intravenous amoxicillin + gentamicin</td></tr></tbody></table></div><br><span class="concept" data-cid="8595">Intravenous dexamethasone</span> should also be given to reduce the risk of neurological sequelae.<br><br>If the patient has a history of immediate hypersensitivity reaction to penicillin or to cephalosporins the BNF recommends using chloramphenicol.<br><br>Management of contacts<br><ul><li>prophylaxis needs to be offered to household and close contacts of patients affected with meningococcal meningitis. Prophylaxis should also be offered to people who been exposed to <span class="concept" data-cid="2697">respiratory secretion</span>, regardless of the closeness of contact</li><li>people who have been exposed to a patient with confirmed bacterial meningitis should be given prophylactic antibiotics if they have close contact within the <span class="concept" data-cid="2696">7 days before onset</span></li><li>oral ciprofloxacin or rifampicin or may be used. The Health Protection Agency (HPA) guidelines now state that whilst either may be used ciprofloxacin is the drug of choice as it is widely available and only requires one dose</li><li>the risk is highest in the first 7 days but persists for at least 4 weeks</li><li>meningococcal vaccination should be offered to close contacts when serotype results are available, including booster doses to those who had the vaccine in infancy</li><li>for pneumococcal meningitis, no prophylaxis is generally needed. There are however exceptions to this. If a cluster of cases of pneumococcal meningitis occur the HPA have a protocol for offering close contacts antibiotic prophylaxis. Please see the link for more details</li></ul><br>*in the 2015 update of the <i>NICE Meningitis (bacterial) and meningococcal septicaemia in under 16s: recognition, diagnosis and management</i> the recommendation for initial empirically therapy for children > than 3 months is intravenous ceftriaxone</div>
---
!!!<center>''MENINGITIS''</center>
<hr>
* ''age < 50:'' Vanc load 25-35 mg/kg then 15-20 mg/kg q8-12h + Ceftriaxone 2gm IV q12h;
* ''age > 50:'' Vanc + Ceftriaxone 2 gm IV q12h + Amp 2gm IV q4h;
* ''Antifungal:'' Amphotericin 0.7-1 mg/kg IV q12h OR Fluconazole 800-1200 mg IV/PO q24h;
* ''Immunocompromised:'' Vanc + Bactrim + Cipro; Post neurosurgery, head trauma: Vanc + Cipro;
* ''Brain abscess:'' Vanc + Ceftriaxone + Metro OR Mero 2gm IV q8h PLUS VAnc 15 mg/kg IV q8h for 14 ds
!!!<center>''MENINGITIS PROTOCOL''</center>
<hr>
* Check ABC
* Neuro checks q 2 x 24 hours
* If AMS, NPO now, regular diet if no AMS
* Labs: CBC, KFT, LFTs, Blood cultures x 2 immediately, prior to antibiotics, head CT (do before LP if suspect ICP or hernia risk), LP: cell count, diff, gram stain, culture, protein, glc, ADA, PCR for enteroviruses
* IVF: D5 ½ NS at 100 mL/h.
* LP, blood cx before giving antibiotics
* Inj Dexona 0.15 mg/kg IV q6h for 4 days
* Inj Vancomycin 500 mg IV q6h PLUS
* Inj Ceftriaxone 2 gm IV q12h
* Inj Ampicillin 2 gm IV q4h (>50 yrs)
* Tab Akurit 4 ____ tab OD
* Inj Dexona 0.3 to 0.4 mg/kg/day for 2 wks, then 0.2 mg/kg/day wk 3, then 0.1 mg/kg/day wk 4, then 4 mg/day and taper 1 mg off the daily dose each week; total duration approx 8 wks.
* Tab Prednisone 60 mg/day. Administer initial dose for two weeks, then taper gradually over the next six weeks (ie, reduce daily dose by 10 mg each week); total duration approximately eight weeks.
* Inj Dexona 0.15 mg/kg IV q6h for 4 days
* Inj Acyclovir at 10 mg/kg IV q8h (viral/encephalitis)
* Inj Aciloc 1 amp IV q12h
* Tab PCM 500 q8h SOS fever/pain
* Syr Cremaffin Plus 30 mL SOS constipation
!!Meningitis in Children: Investigations and Management
<div id="notecontent"><b>Investigations</b><br><br>Contraindication to lumbar puncture (any signs of raised ICP)<br><ul><li>focal neurological signs</li><li>papilloedema</li><li>significant bulging of the fontanelle</li><li>disseminated intravascular coagulation</li><li>signs of cerebral herniation</li></ul><br>For patients with meningococcal septicaemia a <span class="concept" data-cid="2509">lumbar puncture is contraindicated</span> - blood cultures and PCR for meningococcus should be obtained.<br><br><b>Management</b><br><br>1. Antibiotics<br><ul><li><span class="concept" data-cid="261">< 3 months: IV amoxicillin + IV cefotaxime</span></li><li>> 3 months: IV cefotaxime</li></ul><br>2. <span id="concept_popover_id_3942" class="concept concept-3-u trigger-link" data-cid="3942" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3942'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating3942' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(5,255,0)'>Importance: <b>99</b></span> </div>" data-original-title="Consider adding steroids in the management of children > 3 months with meningitis">Steroids</span><br><ul><li><span class="concept" data-cid="10402">NICE advise against giving corticosteroids in children younger than 3 months </span></li><li>dexamethsone should be considered if the lumbar puncture reveals any of the following:<ul><li>frankly purulent CSF</li><li>CSF white blood cell count greater than 1000/microlitre</li><li>raised CSF white blood cell count with protein concentration greater than 1 g/litre</li><li>bacteria on Gram stain</li></ul></li></ul><br>3. Fluids<br><ul><li>treat any shock, e.g. with colloid</li></ul><br>4. Cerebral monitoring<br><ul><li>mechanical ventilation if respiratory impairment</li></ul><br>5. Public health notification and antibiotic prophylaxis of contacts<br><ul><li>ciprofloxacin is now preferred over rifampicin</li></ul></div>
The average women in the UK goes through the menopause when she is 51 years old. The climacteric is the period prior to the menopause where women may experience symptoms, as ovarian function starts to fail
It is recommended to use effective contraception until the following time:
* 12 months after the last period in women > 50 years
* 24 months after the last period in women < 50 years
---
!!Menopause: management
<div id="notecontent">Menopause is defined as the permanent cessation of menstruation. It is caused by the loss of follicular activity. Menopause is a clinical diagnosis usually made in primary care when a woman has not had a period for 12 months. <br><br>Menopausal symptoms are very common and affect roughly 75% of postmenopausal women. Symptoms typically last for 7 years but may resolve quicker and in some cases take much longer. The duration and severity are also variable and may develop before the start of the menopause and in some cases may start years after the onset of menopause. <br><br>The CKS has very thorough and clear guidance on the management of menopause and is summarised below. <br><br>The management of menopause can be split into three categories:<br><ul><li>Lifestyle modifications</li><li>Hormone replacement therapy (HRT)</li><li>Non-hormone replacement therapy </li></ul><br><br><b>Management with lifestyle modifications</b><br><br>Hot flushes<br><ul><li>regular exercise, weight loss and reduce stress</li></ul><br>Sleep disturbance<br><ul><li>avoiding late evening exercise and maintaining good sleep hygiene </li></ul><br>Mood<br><ul><li>sleep, regular exercise and relaxation</li></ul><br>Cognitive symptoms<br><ul><li>regular exercise and good sleep hygiene </li></ul><br><br><b>Management with HRT</b><br><br>Contraindications: <br><ul><li>Current or past breast cancer</li><li>Any oestrogen-sensitive cancer </li><li>Undiagnosed vaginal bleeding</li><li>Untreated endometrial hyperplasia </li></ul><br>Roughly 10% of women will have some form of HRT to treat their menopausal symptoms. There is a current drive by NICE to increase this number as they have found that women were previously being undertreated due to worries about increased cancer risk. If the woman has a uterus then it is important not to give unopposed oestrogens as this will increase her risk of endometrial cancer. Therefore oral or transdermal combined HRT is given.<br><br>If the woman does not have a uterus then oestrogen alone can be given either orally or in a transdermal patch.<br> <br>Women should be advised that the symptoms of menopause typically last for 2-5 years and that treatment with HRT brings certain risks:<br><ul><li>Venous thromboembolism: a slight increase in risk with all forms of oral HRT. No increased risk with transdermal HRT. </li><li>Stroke: slightly increased risk with oral oestrogen HRT.</li><li>Coronary heart disease: combined HRT may be associated with a slight increase in risk.</li><li>Breast cancer: there is an increased risk with all combined HRT although the risk of dying from breast cancer is not raised. </li><li>Ovarian cancer: increased risk with all HRT.</li></ul><br><b>Management with non-HRT</b><br><br>Vasomotor symptoms<br><ul><li>fluoxetine, citalopram or venlafaxine </li></ul><br>Vaginal dryness<br><ul><li>vaginal lubricant or moisturiser </li></ul><br>Psychological symptoms<br><ul><li>self-help groups, cognitive behaviour therapy or antidepressants</li></ul><br>Urogenital symptoms<br><ul><li>if suffering from urogenital atrophy vaginal oestrogen can be prescribed. This is appropriate if they are taking HRT or not</li><li>vaginal dryness can be treated with moisturisers and lubricants. These can be offered alongside vaginal oestrogens if required. </li></ul><br><br><b>Stopping treatment</b><br><br>For vasomotor symptoms, 2-5 years of HRT may be required with regular attempts made to discontinue treatment. Vaginal oestrogen may be required long term. When stopping HRT it is important to tell women that gradually reducing HRT is effective at limiting recurrence only in the short term. In the long term, there is no difference in symptom control. <br><br>Although menopausal symptoms can be managed mainly in primary care, there are some instances when a woman should be referred to secondary care. She should be referred to secondary care if treatment has been ineffective, if there are ongoing side effects or if there is unexplained bleeding.</div>
<div id="notecontent">Premature menopause may be defined as menopause in a women < 45 years old<br><br>Diagnosis<br><ul><li>raised FSH and LH - FSH > 40 iu/l</li><li>low oestradiol - < 100 pmol/l</li></ul><br>Causes of premature menopause include:<br><ul><li>idiopathic: may be family history</li><li>surgery: bilateral oophorectomy. Having a hysterectomy with preservation of the ovaries has also been shown to advance the age of menopause</li><li>radiotherapy</li><li>chemotherapy</li><li>infection: e.g. mumps</li><li>autoimmune disorders</li><li>resistant ovary syndrome: due to FSH receptor abnormalities</li></ul></div>
---
also see [[Premature Ovarian Failure]]
Menorrhagia was previously defined as total blood loss > 80 ml per menses, but it is obviously difficult to quantify. The assessment and management of heavy periods has therefore shifted towards what the woman considers to be excessive and aims to improve quality of life measures.
Causes
* dysfunctional uterine bleeding: this describes menorrhagia in the absence of underlying pathology. This accounts for approximately half of patients
* anovulatory cycles: these are more common at the extremes of a women's reproductive life
* uterine fibroids
* hypothyroidism
* intrauterine devices*
* pelvic inflammatory disease
* bleeding disorders, e.g. von Willebrand disease
*this refers to normal copper coils. Note that the intrauterine system (Mirena) is used to treat menorrhagia
---
<div id="notecontent">Heavy menstrual bleeding (also known as menorrhagia) was previously defined as total blood loss > 80 ml per menses, but it is obviously difficult to quantify. The management has therefore shifted towards what the woman considers to be excessive. Prior to the 1990's many women underwent a hysterectomy to treat heavy periods but since that time the approach has altered radically. The management of menorrhagia now depends on whether a woman needs contraception. <br><br>Investigations<br><ul><li>a <span class="concept" data-cid="2566">full blood count</span> should be performed in all women</li><li>NICE recommend arranging a routine transvaginal <span class="concept" data-cid="338">ultrasound scan</span> if symptoms (for example, intermenstrual or postcoital bleeding, pelvic pain and/or pressure symptoms) suggest a structural or histological abnormality. Other indications include abnormal pelvic exam findings.</li></ul><br>Does not require contraception<br><ul><li>either <span class="concept" data-cid="8413">mefenamic acid</span> 500 mg tds (particularly if there is dysmenorrhoea as well) or <span id="concept_popover_id_2488" class="concept concept-0 trigger-link" data-cid="2488" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2488'>You've never been tested on this concept</div><br><div id='div_concept_rating2488' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(122,255,0)'>Importance: <b>76</b></span> </div>" data-original-title="Tranexamic acid is the first-line non-hormonal treatment for menorrhagia">tranexamic acid</span> 1 g tds. Both are started on the first day of the period</li><li>if no improvement then try other drug whilst awaiting referral</li></ul><br>Requires contraception, options include<br><ul><li><span class="concept" data-cid="339">intrauterine system (Mirena) should be considered first-line</span></li><li><span class="concept" data-cid="8412">combined oral contraceptive pill</span></li><li>long-acting progestogens</li></ul><br><span class="concept" data-cid="8414">Norethisterone</span> 5 mg tds can be used as a short-term option to rapidly stop heavy menstrual bleeding.<br><br>
<center><img width=800 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd914b.png"><div class="imagetext">Flowchart showing the management of menorrhagia</div>
</center>
<div id="notecontent">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Days</b></th></tr></thead><tbody><tr><td><b>Menstruation</b></td><td>1-4</td></tr><tr><td><b>Follicular phase (proliferative phase)</b></td><td>5-13</td></tr><tr><td><b>Ovulation</b></td><td>14</td></tr><tr><td><b>Luteal phase (secretory phase)</b></td><td>15-28</td></tr></tbody></table></div><br>
<center>
<img src="https://upload.wikimedia.org/wikipedia/commons/f/f3/Figure_28_02_07.jpg">
</center>
<br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th></th><th><b>Follicular phase (proliferative phase)</b></th><th><b>Luteal phase (secretory phase)</b></th></tr></thead><tbody><tr><td><b>Ovarian histology</b></td><td>A number of follicles develop.<br><br>One follicle will become dominant around the mid-follicular phase</td><td>Corpus luteum</td></tr><tr><td><b>Endometrial histology</b></td><td>Proliferation of endometrium</td><td>Endometrium changes to secretory lining under influence of progesterone</td></tr><tr><td><b>Hormones</b></td><td>A rise in FSH results in the development of follicles which in turn secrete oestradiol<br><br>When the egg has matured, it secretes enough oestradiol to trigger the <span id="concept_popover_id_415" class="concept concept-0 trigger-link" data-cid="415" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative415'>You've never been tested on this concept</div><br><div id='div_concept_rating415' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(20,255,0)'>Importance: <b>96</b></span> </div>" data-original-title="LH surge causes ovulation">acute release of LH. This in turn leads to ovulation</span></td><td>Progesterone secreted by corpus luteum rises through the luteal phase. <br><br>If fertilisation does not occur the corpus luteum will degenerate and progesterone levels fall<br><br>Oestradiol levels also rise again during the luteal phase</td></tr><tr><td><b>Cervical mucus</b></td><td>Following menstruation the mucus is thick and forms a plug across the external os<br><br>Just prior to ovulation the mucus becomes clear, acellular, low viscosity. It also becomes 'stretchy' - a quality termed spinnbarkeit</td><td>Under the influence of progesterone it becomes thick, scant, and tacky</td></tr><tr><td><b>Basal body temperature</b></td><td>Falls prior to ovulation due to the influence of oestradiol</td><td><span id="concept_popover_id_416" class="concept concept-1 trigger-link" data-cid="416" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative416'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating416' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(147,255,0)'>Importance: <b>71</b></span> </div>" data-original-title="Body temperature rises following ovulation">Rises following ovulation in response to higher progesterone levels</span></td></tr></tbody></table></div></div>
---
>E comes before P
* ''E''strogen is major hormone of ''PF''roliferative phase - ''P''rogesterone of Luteal phase
* ''E''strogen is always growing hormone - in Breast and Follicles
* mucus flows ''E''asily - mucus becomes thick ''P''lug
---
>LH is LOW to HIGH
* LH changes from LOW to HIGH → Ovulation
---
>Temparature LOH
* Temp ''L''ow(Estradiol) → ''O''vulation → Temp ''H''igh(Progesterone)
<div id="notecontent">The Mental Capacity Act of 2005 came into force in 2007. It applies to adults over the age of 16 and sets out who can take decisions if a patient becomes incapacitated (e.g. following a stroke). Mental capacity includes the ability to make decisions affecting daily life, healthcare and financial issues. <br><br>The Act contains 5 key principles:<br><ul><li>A person must be assumed to have capacity unless it is established that he lacks capacity</li><li>A person is not to be treated as unable to make a decision unless all practicable steps to help him to do so have been taken without success</li><li>A person is not to be treated as unable to make a decision merely because he makes an unwise decision</li><li>An act done, or decision made, under this Act for or on behalf of a person who lacks capacity must be done, or made, in his best interests</li><li>Before the act is done, or the decision is made, regard must be had to whether the purpose for which it is needed can be as effectively achieved in a way that is less restrictive of the person's rights and freedom of action</li></ul><br><b>Assessment of capacity</b><br><br>The Act sets out a clear test for assessing whether a person lacks capacity. It is a 'decision-specific' and 'time-specific' test. An adult can only be considered unable to make a particular decision if:<br><br>1. He or she has an 'impairment of, or disturbance in, the functioning of the mind or<br>brain' whether permanent or temporary AND<br><br>2. He or she is unable to undertake any of the following<br><ul><li>a. understand the information relevant to the decision</li><li>b. retain that information</li><li>c. use or weigh that information as part of the process of making the decision</li><li>d. communicate the decision made by talking, sign language or other means</li></ul><br>No individual can be labelled 'incapable' simply as a result of a particular medical condition. Section 2 of the Act makes it clear that a lack of capacity cannot be assumed by a person's age, appearance, or any condition or aspect of a person's behaviour<br><br><b>Best interests</b><br><br>The following should be considered when assessing what is in someone's best interests:<br><ul><li>1. Whether the person is likely to regain capacity and can the decision wait.</li><li>2. How to encourage and optimise the participation of the person in the decision.</li><li>3. The past and present wishes, feelings, beliefs, values of the person and any other relevant factors</li><li>4. Views of other relevant people</li></ul><br><b>Lasting Powers of Attorney (LPAs)</b><br><br>The Act allows a person to appoint an attorney to act on their behalf if they should lose capacity in the future, replacing the current Enduring Power of Attorney (EPA). In addition to property and financial affairs the Act also allows people to empower an attorney make health and welfare decisions. The attorney only has the authority to make decisions about life-sustaining treatment if the LPA specifies that. Before it can be used an LPA must be registered with the Office of the Public Guardian<br><br><b>Advance decisions</b><br><br>Advance decisions can be drawn up by anybody with capacity to specify treatments they would not want if they lost capacity. They may be made verbally unless they specify refusing life-sustaining treatment (e.g. Ventilation) in which case they need to be written, signed and witnessed to be valid. Advance decisions cannot demand treatment</div>
<div id="notecontent">This is used for someone over the age of 16 years who will not be admitted voluntarily. Patients who are under the influence of alcohol or drugs are specifically excluded<br><br>Section 2<br><ul><li>admission for assessment for up to 28 days, not renewable</li><li>an Approved Mental Health Professional (AMHP) or rarely the nearest relative (NR) makes the application on the recommendation of 2 doctors</li><li>one of the doctors should be 'approved' under Section 12(2) of the Mental Health Act (usually a consultant psychiatrist)</li><li><span id="concept_popover_id_10030" class="concept concept-0 trigger-link" data-cid="10030" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10030'>You've never been tested on this concept</div><br><div id='div_concept_rating10030' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(10,255,0)'>Importance: <b>98</b></span> </div>" data-original-title="Treatment can be given against a patient's wishes if they are under a section 2 or 3">treatment can be given against a patient's wishes</span></li></ul><br>Section 3<br><ul><li>admission for treatment for up to 6 months, can be renewed</li><li>AMHP along with 2 doctors, both of which must have seen the patient within the past 24 hours</li><li><span id="concept_popover_id_10030" class="concept concept-0 trigger-link" data-cid="10030" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10030'>You've never been tested on this concept</div><br><div id='div_concept_rating10030' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(10,255,0)'>Importance: <b>98</b></span> </div>" data-original-title="Treatment can be given against a patient's wishes if they are under a section 2 or 3">treatment can be given against a patient's wishes</span></li></ul><br>Section 4<br><ul><li>72 hour assessment order</li><li>used as an emergency, when a section 2 would involve an unacceptable delay</li><li>a GP and an AMHP or NR</li><li>often changed to a section 2 upon arrival at hospital</li></ul><br>Section 5(2)<br><ul><li>a patient who is a voluntary patient in hospital can be legally detained by a doctor for 72 hours</li></ul><br>Section 5(4)<br><ul><li>similar to section 5(2), allows a nurse to detain a patient who is voluntarily in hospital for 6 hours</li></ul><br>Section 17a<br><ul><li>Supervised Community Treatment (Community Treatment Order)</li><li><span class="concept" data-cid="10028">can be used to recall a patient to hospital for treatment if they do not comply with conditions of the order in the community, such as complying with medication</span> </li></ul><br>Section 135<br><ul><li>a court order can be obtained to allow the police to break into a property to remove a person to a Place of Safety</li></ul><br>Section 136<br><ul><li>someone found in a public place who appears to have a mental disorder can be taken by the police to a Place of Safety</li><li><span id="concept_popover_id_10029" class="concept concept-0 trigger-link" data-cid="10029" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10029'>You've never been tested on this concept</div><br><div id='div_concept_rating10029' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(229,255,0)'>Importance: <b>55</b></span> </div>" data-original-title="A Section 136 can only be used for up to 24 hours, whilst a Mental Health Act assessment is arranged">can only be used for up to 24 hours, whilst a Mental Health Act assessment is arranged</span></li></ul></div>
---
>135 Break
>17a for Teen who doesn't take medication
---
<div id="notecontent">Meralgia paraesthetica comes from the Greek words meros for thigh and algos for pain and is often described as a syndrome of paraesthesia or anaesthesia in the distribution of the lateral femoral cutaneous nerve (LFCN). It is an entrapment mononeuropathy of the LFCN, but can also be iatrogenic after a surgical procedure, or result from a neuroma. Although uncommon, meralgia paraesthetica is not rare and is hence probably underdiagnosed.<br><br>Anatomy<br><ul><li>The LFCN is primarily a sensory nerve, carrying no motor fibres.</li><li>It most commonly originates from the L2/3 segments.</li><li>After passing behind the psoas muscle, it runs beneath the iliac fascia as it crosses the surface of the iliac muscle and eventually exits through or under the lateral aspect of the inguinal ligament.</li><li>As the nerve curves medially and inferiorly around the anterior superior iliac spine (ASIS), it may be subject to repetitive trauma or pressure.</li><li>Compression of this nerve anywhere along its course can lead to the development of meralgia paraesthetica. </li></ul><br>Epidemiology<br><ul><li>The majority of cases occur in people aged between 30 and 40.</li><li>In some, both legs may be affected. </li><li>It is more common in men than women.</li><li>Occurs more commonly in those with diabetes than in the general population. </li></ul><br>Risk factors <sup>3</sup><br><ul><li>Obesity </li><li>Pregnancy </li><li>Tense ascites </li><li>Trauma</li><li>Iatrogenic, such as pelvic osteotomy, spinal surgeries, laparoscopic hernia repair and bariatric surgery. In some cases, may result from abduction splints used in the management of Perthe's disease. </li><li>Various sports have been implicated, including gymnastics, football, bodybuilding and strenuous exercise.</li><li>Some cases are idiopathic. </li></ul><br>Patients typically present with the following symptoms in the upper lateral aspect of the thigh: <br><ul><li>Burning, tingling, coldness, or shooting pain</li><li>Numbness </li><li>Deep muscle ache</li><li>Symptoms are usually aggravated by standing, and relieved by sitting </li><li>They can be mild and resolve spontaneously or may severely restrict the patient for many years. </li></ul><br>Signs:<br><ul><li>Symptoms may be reproduced by deep palpation just below the ASIS (pelvic compression) and also by extension of the hip.</li><li>There is altered sensation over the upper lateral aspect of the thigh.</li><li>There is no motor weakness. </li></ul><br>Investigations:<br><ul><li>The pelvic compression test is highly sensitive, and often, meralgia paraesthetica can be diagnosed based on this test alone</li><li>Injection of the nerve with local anaesthetic will abolish the pain. Using ultrasound is effective both for diagnosis and guiding injection therapy in meralgia paraesthetica</li><li>Nerve conduction studies may be useful.</li></ul></div>
!!Metformin
is a biguanide used mainly in the treatment of type 2 diabetes mellitus. It has a number of actions which improves glucose tolerance (see below). Unlike sulphonylureas it does not cause hypoglycaemia and weight gain and is therefore first-line, particularly if the patient is overweight. Metformin is also used in polycystic ovarian syndrome and non-alcoholic fatty liver disease
Mechanism of action
* acts by activation of the AMP-activated protein kinase (AMPK)
* increases insulin sensitivity
* decreases hepatic gluconeogenesis
* may also reduce gastrointestinal absorption of carbohydrates
Adverse effects
* `gastrointestinal upsets` are common (nausea, anorexia, diarrhoea), intolerable in 20%
* reduced vitamin B12 absorption - rarely a clinical problem
* `lactic acidosis*` with severe liver disease or renal failure
Contraindications
* chronic kidney disease: NICE recommend that the dose should be reviewed if the creatinine is > 130 µmol/l (or eGFR < 45 ml/min) and stopped if the creatinine is > 150 µmol/l (or eGFR < 30 ml/min)
* metformin may cause lactic acidosis if taken during a period where there is tissue hypoxia. Examples include a recent myocardial infarction, sepsis, acute kidney injury and severe dehydration
* iodine-containing x-ray contrast media: examples include peripheral arterial angiography, coronary angiography, intravenous pyelography (IVP); there is an increasing risk of provoking renal impairment due to contrast nephropathy; metformin should be discontinued on the day of the procedure and for 48 hours thereafter
* alcohol abuse is a relative contraindication
Starting metformin
* metformin should be titrated up slowly to reduce the incidence of gastrointestinal side-effects
* if patients develop unacceptable side-effects then modified-release metformin should be considered
*it is now increasingly recognised that lactic acidosis secondary to metformin is rare, although it remains important in the context of exams
<div id="body_content">
Methotrexate is an antimetabolite that <span class="concept" data-cid="7978">inhibits dihydrofolate reductase</span>, an enzyme essential for the synthesis of purines and pyrimidines. It is considered an 'important' drug as whilst it can be very effective in controlling disease the side-effects may be potentially life-threatening - careful prescribing and close monitoring is essential.<br><br>Indications<br><ul><li>inflammatory arthritis, especially <span class="concept" data-cid="7979">rheumatoid arthritis</span></li><li>psoriasis</li><li>some chemotherapy acute lymphoblastic leukaemia</li></ul><br>Adverse effects<br><ul><li><span class="concept" data-cid="6223">mucositis</span></li><li><span class="concept" data-cid="8270">myelosuppression</span></li><li><span class="concept" data-cid="8271">pneumonitis</span></li><li><span class="concept" data-cid="4323">pulmonary fibrosis</span></li><li><span class="concept" data-cid="8272">liver fibrosis</span></li><li><span class="concept" data-cid="8269">mucositis</span></li></ul><br>Pregnancy<br><ul><li>women should avoid pregnancy for at least <span class="concept" data-cid="991">6 months</span> after treatment has stopped</li><li>the BNF also advises that men using methotrexate need to use effective contraception for at least <span class="concept" data-cid="991">6 months</span> after treatment</li></ul><br>Prescribing methotrexate<br><ul><li>methotrexate is a drug with a high potential for patient harm. It is therefore important that you are familiar with guidelines relating to its use</li><li><span class="concept" data-cid="10615">methotrexate is taken weekly, rather than daily</span></li><li>FBC, U&E and LFTs need to be regularly monitored. The Committee on Safety of Medicines recommend 'FBC and renal and LFTs before starting treatment and repeated weekly until therapy stabilised, thereafter patients should be monitored every 2-3 months'</li><li><span class="concept" data-cid="9728">folic acid 5mg once weekly should be co-prescribed</span>, taken more than 24 hours after methotrexate dose</li><li>the starting dose of methotrexate is 7.5 mg weekly (source: BNF)</li><li>only one strength of methotrexate tablet should be prescribed (usually 2.5 mg)</li></ul><br>Interactions<br><ul><li>avoid prescribing <span class="concept" data-cid="894">trimethoprim</span> or <span class="concept" data-cid="3187">co-trimoxazole</span> concurrently - increases risk of marrow aplasia</li><li>high-dose <span class="concept" data-cid="4323">aspirin</span> increases the risk of methotrexate toxicity secondary to reduced excretion</li></ul><br>Methotrexate toxicity<br><ul><li>the treatment of choice is <span class="concept" data-cid="2237">folinic acid</span></li></ul></div>
Metoclopramide is a D2 receptor antagonist* mainly used in the management of nausea. Other uses include:
* gastro-oesophageal reflux disease
* prokinetic action is useful in gastroparesis secondary to diabetic neuropathy
* often combined with analgesics for the treatment of migraine (migraine attacks result in gastroparesis, slowing the absorption of analgesics)
Adverse effects
* extrapyramidal effects: oculogyric crisis. This is particularly a problem in children and young adults
* hyperprolactinaemia
* tardive dyskinesia
* parkinsonism
Metoclopramide should be avoided in bowel obstruction, but may be helpful in paralytic ileus.
*whilst metoclopramide is primarily a D2 receptor antagonist, the mechanism of action is quite complicated:
* it is also a mixed 5-HT3 receptor antagonist/5-HT4 receptor agonist
* the antiemetic action is due to its antagonist activity at D2 receptors in the chemoreceptor trigger zone. At higher doses the 5-HT3 receptor antagonist also has an effect
* the gastroprokinetic activity is mediated by D2 receptor antagonist activity and 5-HT4 receptor agonist activity
Metronidazole is a type of antibiotic that works by forming reactive cytotoxic metabolites inside the bacteria.
Adverse effects
* disulfiram-like reaction with alcohol
---
* The combination of metronidazole and ethanol can cause a disulfiram-like reaction.
* Clinical features of this include head and neck flushing, nausea and vomiting, sweatiness, headache and palpitations.
* Cefoperazone, a cephalosporin, is also associated with a disulfiram-like reaction to alcohol.
Monoclonal gammopathy of undetermined significance (MGUS, also known as benign paraproteinaemia and monoclonal gammopathy) is a common condition that causes a paraproteinaemia and is often mistaken for myeloma. Differentiating features are listed below. Around 10% of patients eventually develop myeloma at 10 years, with 50% at 15 years
Features
* usually asymptomatic
* no bone pain or increased risk of infections
* around 10-30% of patients have a demyelinating neuropathy
Differentiating features from myeloma
* normal immune function
* normal beta-2 microglobulin levels
* lower level of paraproteinaemia than myeloma (e.g. < 30g/l IgG, or < 20g/l IgA)
* stable level of paraproteinaemia
* no clinical features of myeloma (e.g. lytic lesions on x-rays or renal disease)
Patients are at risk of a number of immediate, early and late complications following a myocardial infarction (MI).
!!!Cardiac arrest
This most commonly occurs due to patients developing ventricular fibrillation and is the most common cause of death following a MI. Patients are managed as per the ALS protocol with defibrillation.
!!!Cardiogenic shock
If a large part of the ventricular myocardium is damaged in the infarction the ejection fraction of the heart may decrease to the point that the patient develops cardiogenic shock. This is difficult to treat. Other causes of cardiogenic shock include the 'mechanical' complications such as left ventricular free wall rupture as listed below. Patients may require inotropic support and/or an intra-aortic balloon pump.
!!!Chronic heart failure
As described above, if the patient survives the acute phase their ventricular myocardium may be dysfunctional resulting in chronic heart failure. Loop diuretics such as furosemide will decrease fluid overload. Both ACE-inhibitors and beta-blockers have been shown to improve the long-term prognosis of patients with chronic heart failure.
!!!Tachyarrhythmias
Ventricular fibrillation, as mentioned above, is the most common cause of death following a MI. Other common arrhythmias including ventricular tachycardia.
!!!Bradyarrhythmias
Atrioventricular block is more common following inferior myocardial infarctions.
!!!Pericarditis
Pericarditis in the first 48 hours following a transmural MI is common (c. 10% of patients). The pain is typical for pericarditis (worse on lying flat etc), a pericardial rub may be heard and a pericardial effusion may be demonstrated with an echocardiogram.
Dressler's syndrome tends to occur around 2-6 weeks following a MI. The underlying pathophysiology is thought to be an autoimmune reaction against antigenic proteins formed as the myocardium recovers. It is characterised by a combination of fever, pleuritic pain, pericardial effusion and a raised ESR. It is treated with NSAIDs.
!!!Left ventricular aneurysm
The ischaemic damage sustained may weaken the myocardium resulting in aneurysm formation. This is typically associated with persistent ST elevation and left ventricular failure. Thrombus may form within the aneurysm increasing the risk of stroke. Patients are therefore anticoagulated.
!!!Left ventricular free wall rupture
This is seen in around 3% of MIs and occurs around 1-2 weeks afterwards. Patients present with acute heart failure secondary to cardiac tamponade (raised JVP, pulsus paradoxus, diminished heart sounds). Urgent pericardiocentesis and thoracotomy are required.
!!!Ventricular septal defect
* Rupture of the interventricular septum usually occurs in the first week and is seen in around 1-2% of patients.
* Features: acute heart failure associated with a pan-systolic murmur.
* An echocardiogram is diagnostic and will exclude acute mitral regurgitation which presents in a similar fashion.
* Urgent surgical correction is needed.
An `anteroseptal MI` can be complicated by a VSD. This is best heard at the `left parasternal edge`.
`Differentiate this from a mitral regurgitation murmur which is best heard at the apex, radiates to the axilla and increases with the expiration as well as tricuspid regurgitation which is best heard in the left fourth interspace, increases with inspiration and has a systolic wave in the JVP. `
!!!Acute mitral regurgitation
More common with `infero-posterior` infarction and may be due to ischaemia or rupture of the papillary muscle `heard best at Apex`. Acute hypotension and pulmonary oedema may occur. An early-to-mid systolic murmur is typically heard. Patients are treated with vasodilator therapy but often require emergency surgical repair.
Microcephaly may be defined as an occipital-frontal circumference < 2nd centile
Causes include
* normal variation e.g. small child with small head
* familial e.g. parents with small head
* congenital infection
* perinatal brain injury e.g. hypoxic ischaemic encephalopathy
* fetal alcohol syndrome
* syndromes: Patau
* craniosynostosis
!!Microcytic anaemia
Causes
*iron-deficiency anaemia
*thalassaemia*
*congenital sideroblastic anaemia
*anaemia of chronic disease (more commonly a normocytic, normochromic picture)
*lead poisoning
A question sometimes seen in exams gives a history of a normal haemoglobin level associated with a microcytosis. In patients not at risk of thalassaemia, this should raise the possibility of polycythaemia rubra vera which may cause an iron-deficiency secondary to bleeding.
New onset microcytic anaemia in elderly patients should be urgently investigated to exclude underlying malignancy.
*in beta-thalassaemia minor the microcytosis is often disproportionate to the anaemia
---
>IRON THAL - LEAD SIDE - Chronic is Dual
*Iron, Thalassemia, Lead, SIDEroblastic
<hr><center>''MIDAZOLAM''</center><hr>
<center>''Adult Dosage''</center><hr>
''Preoperative sedation:''
* ''I.M.:'' 0.07-0.08 mg/kg 30-60 minutes prior to surgery/procedure; usual dose: 5 mg; I.V.: 0.02-0.04 mg/kg; repeat every 5 minutes as needed to desired effect or up to 0.1-0.2 mg/kg Anesthesia: I.V.: Induction: Unpremedicated patients: 0.3-0.35 mg/kg (up to 0.6 mg/kg in resistant cases) Premedicated patients: 0.15-0.35 mg/kg Maintenance: 0.05-0.3 mg/kg as needed, or continuous infusion 0.25-1.5 mcg/kg/minute
''Sedation in mechanically ventilated patients: I.V.:''
* ''Initial dose:'' 0.01-0.05 mg/kg (~0.5-4 mg); may repeat at 5- to 15-minute intervals until adequate sedation achieved; maintenance infusion: 0.02-0.1 mg/kg/hour. Titrate to reach desired level of sedation. or I.V.: Initial dose: 0.02-0.08 mg/kg (~1-5 mg in 70 kg adult); may repeat at 5- to 15-minute intervals until adequate sedation achieved; maintenance infusion: 0.04-0.2 mg/kg/hour. Titrate to reach desired level of sedation
''Refractory status epilepticus:''
* ''Note:'' Intubation required; adjust dose based on hemodynamics, seizure activity, and EEG. I.V.: 0.15-0.3 mg/kg (usual dose: 5-15 mg); may repeat every 10-15 minutes as needed or 0.2 mg/kg bolus followed by a continuous infusion of 0.05-0.6 mg/kg/hour
<hr><center>''Pediatric Dosage''</center><hr>
''Sedation, anxiolysis, and amnesia prior to procedure or before induction of anesthesia:''
* ''I.M.: Usual:'' 0.1-0.15 mg/kg 30-60 minutes before surgery or procedure; ''range:'' 0.05-0.15 mg/kg; doses up to 0.5 mg/kg have been used in more anxious patients; maximum total dose: 10 mg
* ''I.V.: Infants 6 months to Children 5 years:'' Initial: 0.05-0.1 mg/kg; titrate dose carefully; total dose of 0.6 mg/kg may be required; usual total dose maximum: 6 mg;
* ''Children 6-12 years:'' Initial: 0.025-0.05 mg/kg; titrate dose carefully; total doses of 0.4 mg/kg may be required; usual total dose maximum: 10 mg;
* ''Children 12-16 years:'' Dose as adults; usual total dose maximum: 10 mg
''Sedation, mechanically ventilated patient:''
* ''I.V.:'' Loading dose: 0.05-0.2 mg/kg given slow I.V. over 2-3 minutes, then follow with initial continuous I.V. infusion: 0.06-0.12 mg/kg/hour (1-2 mcg/kg/minute); titrate to the desired effect; range: 0.024-0.36 mg/kg/hour (0.4-6 mcg/kg/minute)
''Seizures, acute treatment:''
* ''Infants 6-11 months:'' 2.5 mg; Children 1-4 years: 5 mg;
* ''Children 5-9 years:'' 7.5 mg;
* ''Children and Adolescents ≥10 years:'' 10 mg; I.M.: 0.2 mg/kg/dose; repeat every 10-15 minutes; maximum dose: 6 mg
''Seizures, refractory; status epilepticus refractory to standard therapy:''
* ''I.V. Loading dose:'' 0.15-0.2 mg/kg; doses up to 0.5 mg/kg/dose; Continuous
* ''I.V. infusion:'' Initial rate: 0.06-0.12 mg/kg/hour (1-2 mcg/kg/minute); increase rate every 5-15 minutes in increments of 0.06-0.24 mg/kg/hour (1-4 mcg/kg/minute) until seizure activity ceases; mean required dosage across a number of studies: 0.11-0.84 mg/kg/hour (1.87-14 mcg/kg/minute); maximum reported dose: 3 mg/kg/hour (50 mcg/kg/minute)
<div id="notecontent">The International Headache Society has produced the following diagnostic criteria for migraine without aura:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Point</b></th><th><b>Criteria</b></th></tr></thead><tbody><tr><td><b>A</b></td><td>At least 5 attacks fulfilling criteria B-D</td></tr><tr><td><b>B</b></td><td>Headache attacks lasting 4-72 hours* (untreated or unsuccessfully treated)</td></tr><tr><td><b>C</b></td><td>Headache has at least two of the following characteristics:<br><ul><li>1. unilateral location*</li><li>2. pulsating quality (i.e., varying with the heartbeat)</li><li>3. moderate or severe pain intensity</li><li>4. aggravation by or causing avoidance of routine physical activity (e.g., walking or climbing stairs)</li></ul></td></tr><tr><td><b>D</b></td><td>During headache at least one of the following:<br><ul><li>1. nausea and/or vomiting*</li><li>2. photophobia and phonophobia</li></ul></td></tr><tr><td><b>E</b></td><td>Not attributed to another disorder (history and examination do not suggest a secondary headache disorder or, if they do, it is ruled out by appropriate investigations or headache attacks do not occur for the first time in close temporal relation to the other disorder)</td></tr></tbody></table></div><br>*In children, attacks may be shorter-lasting, headache is more commonly bilateral, and gastrointestinal disturbance is more prominent.<br><br>Migraine with aura (seen in around 25% of migraine patients) tends to be easier to diagnose with a typical aura being progressive in nature and may occur hours prior to the headache. Typical aura include a transient hemianopic disturbance or a spreading scintillating scotoma ('jagged crescent'). Sensory symptoms may also occur<br><br>If we compare these guidelines to the <b>NICE criteria</b> the following points are noted:<br><ul><li>NICE suggests migraines may be unilateral or bilateral</li><li>NICE also give more detail about typical auras:</li></ul><br>Auras may occur with or without headache and:<br><ul><li>are fully reversible</li><li>develop over at least 5 minutes</li><li>last 5-60 minutes</li></ul><br>The following aura symptoms are atypical and may prompt further investigation/referral;<br><ul><li>motor weakness</li><li>double vision</li><li>visual symptoms affecting only one eye</li><li>poor balance</li><li>decreased level of consciousness.</li></ul></div>
<div id="body_content">
It should be noted that as a general rule 5-HT receptor agonists are used in the acute treatment of migraine whilst 5-HT receptor antagonists are used in prophylaxis. NICE produced guidelines in 2012 on the management of headache, including migraines.<br><br>Acute treatment<br><ul><li>first-line: offer combination therapy with an <span class="concept" data-cid="875">oral triptan and an NSAID, or an oral triptan and paracetamol</span></li><li>for young people aged 12-17 years consider a nasal triptan in preference to an oral triptan</li><li>if the above measures are not effective or not tolerated offer a non-oral preparation of metoclopramide* or prochlorperazine and consider adding a non-oral NSAID or triptan</li></ul><br>Prophylaxis<br><ul><li>prophylaxis should be given if patients are experiencing <span class="concept" data-cid="879">2 or more attacks per month</span>. Modern treatment is effective in about 60% of patients.</li><li>NICE advise either <span class="concept" data-cid="875">topiramate or propranolol</span> 'according to the person's preference, comorbidities and risk of adverse events'. Propranolol should be used in preference to topiramate in <span class="concept" data-cid="877">women of child bearing age</span> as it may be teratogenic and it can reduce the effectiveness of hormonal contraceptives ''Propronalol in all - TOPiramate in TOP(old-non child bearing) age''</li><li>if these measures fail NICE recommend '<span class="concept" data-cid="10031">a course of up to 10 sessions of acupuncture over 5-8 weeks</span>' </li><li>NICE recommend: 'Advise people with migraine that riboflavin (400 mg once a day) may be effective in reducing migraine frequency and intensity for some people'</li><li>for women with predictable <span class="concept" data-cid="878">menstrual migraine</span> treatment NICE recommend either frovatriptan (2.5 mg twice a day) or zolmitriptan (2.5 mg twice or three times a day) as a type of 'mini-prophylaxis'</li><li>pizotifen is no longer recommend. Adverse effects such as weight gain & drowsiness are common</li></ul><br><br>*caution should be exercised with young patients as acute dystonic reactions may develop</div>
---
>AGONISTS in AGONY - BLOCKERS for PREVENTION
*5HT AGONISTS in ACUTE phase - 5HT antagonists for prophylaxis
---
>TOPiramate in TOP age
*Propronalol in ALL - TOPiramate in TOP(OLD-non child bearing) age
---
>TOPiramate is TERatogenic
---
<div id="notecontent">NICE produced updated guidelines in 2009 on the management of depression in primary and secondary care. Patients are classified according to the severity of the depression and whether they have an underlying chronic physical health problem.<br><br>Please note that due to the length of the 'quick' reference guide the following is a summary and we would advise you follow the link for more detail.<br><br><b>Persistent subthreshold depressive symptoms or mild to moderate depression</b><br><br>General measures<br><ul><li>sleep hygiene</li><li>active monitoring for people who do want an intervention</li></ul><br>Drug treatment <br><ul><li>do not use antidepressants routinely but consider them for people with:</li><li>a past history of moderate or severe depression or</li><li>initial presentation of subthreshold depressive symptoms that have been present for a long period (typically at least 2 years) or</li><li>subthreshold depressive symptoms or mild depression that persist(s) after other interventions</li><li>if a patient has a chronic physical health problem and mild depression complicates the care of the physical health problem</li></ul><br>The following 'low-intensity psychosocial interventions' may be useful:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Intervention</th><th>Notes</th></tr></thead><tbody><tr><td><b>Individual guided self-help based on CBT principles</b> <br><br>(Includes behavioural activation and problem-solving techniques)</td><td>Interventions should:<br><ul><li>include written materials (or alternative media)</li><li>be supported by a trained practitioner who reviews progress</li><li>consist of up to 6-8 sessions (face-to-face and by telephone) over 9-12 weeks, including follow-up</li></ul></td></tr><tr><td><b>Computerised CBT</b></td><td>Interventions should:<br><ul><li>explain the CBT model, encourage tasks between sessions, and use thought-</li><li>challenging and active monitoring of behaviour, thought patterns and outcomes</li><li>be supported by a trained practitioner who reviews progress and outcome typically take place over 9-12 weeks, including follow-up</li></ul></td></tr><tr><td><b>A structured group physical activity programme</b></td><td>Interventions should:<br><ul><li>typically consist of 3 sessions per week (lasting 45 minutes to 1 hour) over 10-14 weeks</li></ul></td></tr></tbody></table></div><br>An alternative is <b>group-based CBT</b><br><ul><li>be based on a model such as 'Coping with depression'</li><li>be delivered by two trained and competent practitioners</li><li>consist of 10-12 meetings of 8-10 participants</li><li>typically take place over 12-16 weeks, including follow-up</li></ul><br>For patients with chronic physical health problems NICE also recommend considering a group-based peer support programme:<br><ul><li>focus on sharing experiences and feelings associated with having a chronic physical health problem</li><li>consist typically of 1 session per week over 8-12 weeks</li></ul></div>
''Social''
|! Milestone |! Age |
|6 weeks|Smiles (Refer at 10 weeks)|
|3 months|Laughs<br>Enjoys friendly handling|
|6 months|Not shy|
|9 months|Shy<br>Takes everything to mouth|
''Feeding''
|!Age|!Milestone|
|May put hand on bottle when being fed|6 months|
|Drinks from cup + uses spoon, develops over 3 month period|12 -15 months|
|Competent with spoon, doesn't spill with cup|2 years|
|Uses spoon and fork|3 years|
|Uses knife and fork|5 years|
''Dressing''
|!Age|!Milestone|
|Helps getting dressed/undressed |12-15 months|
|Takes off shoes, hat but unable to replace|18 months|
|Puts on hat and shoes|2 years|
|Can dress and undress independently except for laces and buttons|4 years|
''Play''
|!Age|!Milestone|
|Plays 'peek-a-boo'|9 months|
|Waves 'bye-bye'<br>Plays 'pat-a-cake'|12 months|
|Plays contentedly alone|18 months|
|Plays near others, not with them|2 years|
|Plays with other children|4 years|
''Speech and Hearing''
|!Age|!Speech and Hearing|!Gross Motor|
|!3 months|Quietens to parents voice<br>Turns towards sound<br>Squeals|Little or no head lag on being pulled to sit<br>Lying on abdomen, good head control<br>Held sitting, lumbar curve|
|!6 months|Double syllables 'adah', 'erleh'|Lying on abdomen, arms extended<br>Lying on back, lifts and grasps feet<br>Pulls self to sitting<br>Held sitting, back straight<br>Rolls front to back<br><br>''7-8m:'' Sits without support (Refer at 12 months)|
|!9 months|Says 'mama' and 'dada' - ''9 months to say MaMa''<br>Understands 'no'|Pulls to standing<br>Crawls|
|!12 months|Knows and responds to own name - ''ONE year for OWN name''|Cruises<br>Walks with one hand held|
|!12-15 months |Knows about 2-6 words (Refer at 18 months)<br>Understands simple commands - 'give it to mummy'|''13-15m:'' Walks unsupported (Refer at 18 months)|
|!18 months||Squats to pick up a toy|
|!2 years|Combine two words<br>Points to parts of the body|Runs<br>Walks upstairs and downstairs holding on to rail|
|!2½ years|Vocabulary of 200 words||
|!3 years|Talks in short sentences (e.g. 3-5 words)<br>Asks 'what' and 'who' questions<br>Identifies colours<br>Counts to 10 (little appreciation of numbers though)|Rides a tricycle using pedals<br>Walks up stairs without holding on to rail|
|!4 years|Asks 'why', 'when' and 'how' questions|Hops on one leg|
---
>CRAWLS to MAMA at 9months
---
>ONE year for responding to OWN name
---
>SITTING is HALF OF WALKING
*SITTING at 7-8 months (refer at 12m) - WALKING at 13-15 months (refer at 18m)
---
>Combine 2 words by 2yr - Combine 3-5 words by 3yr
---
Milia are small, benign, keratin-filled cysts that typically appear around the face. They may appear at any age but are more common in newborns.
<center>
<img width=300 src="https://www.rch.org.au/uploadedImages/Main/Content/rchcpg/hospital_clinical_guideline_index/Figure%202.%20Neonatal%20Milia.jpg"><img width=300 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img023.jpg">
</center>
<div id="notecontent">Minimal change disease nearly always presents as nephrotic syndrome, accounting for 75% of cases in children and 25% in adults.<br><br>The majority of cases are idiopathic, but in around 10-20% a cause is found:<br><ul><li>drugs: NSAIDs, rifampicin</li><li>Hodgkin's lymphoma, thymoma</li><li>infectious mononucleosis</li></ul><br>Pathophysiology<br><ul><li>T-cell and cytokine-mediated damage to the glomerular basement membrane → polyanion loss</li><li>the resultant reduction of electrostatic charge → increased glomerular permeability to serum albumin</li></ul><br>Features<br><ul><li>nephrotic syndrome</li><li>normotension - hypertension is rare</li><li>highly selective proteinuria<ul><li>only intermediate-sized proteins such as albumin and transferrin leak through the glomerulus</li></ul></li><li>renal biopsy<ul><li><span class="concept" data-cid="10167">normal glomeruli on light microscopy </span></li><li><span class="concept" data-cid="10168">electron microscopy shows fusion of podocytes and effacement of foot processes</span></li></ul></li></ul><br>Management<br><ul><li>majority of cases (80%) are steroid-responsive</li><li>cyclophosphamide is the next step for steroid-resistant cases</li></ul><br>Prognosis is overall good, although relapse is common. Roughly:<br><ul><li>1/3 have just one episode</li><li>1/3 have infrequent relapses</li><li>1/3 have frequent relapses which stop before adulthood</li></ul></div>
<div class="twocolumns">
<$list filter="[tag[Misc]sort[title]]"/>
</div>
Threatened miscarriage
* painless vaginal bleeding occurring before 24 weeks, but typically occurs at 6 - 9 weeks
* the bleeding is often less than menstruation
* cervical os is closed
* complicates up to 25% of all pregnancies
Missed (delayed) miscarriage
* a gestational sac which contains a dead fetus before 20 weeks without the symptoms of expulsion
* mother may have light vaginal bleeding / discharge and the symptoms of pregnancy which disappear. Pain is not usually a feature
* cervical os is closed
* when the gestational sac is > 25 mm and no embryonic/fetal part can be seen it is sometimes described as a 'blighted ovum' or 'anembryonic pregnancy'
Inevitable miscarriage
* heavy bleeding with clots and pain
* cervical os is open
Incomplete miscarriage
* not all products of conception have been expelled
* pain and vaginal bleeding
* cervical os is open
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Agitation"/>Acute Agitation</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Delirium Tremens"/>Acute Alcohol Withdrawal</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Anaphylaxis"/>Anaphylaxis</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Anemia"/>Anemia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Antibiotics of Choice"/>Antibiotics of Choice</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Aspiration"/>Aspiration</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Burns"/>Burns</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Coagulopathy"/>Coagulopathy</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="DKA/HHS Protocol"/>DKA/HHS Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Edema"/>Edema</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Eye Problems"/>Eye Conditions</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Falls"/>Falls in Elderly</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Fever"/>Fever</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Fever Protocol"/>Fever Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Fractures"/>Fractures</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Tropical Fevers"/>Tropical Fevers</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Head Injury"/>Head Injury</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypothermia"/>Hypothermia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Insomnia"/>Insomnia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Monkey Bite"/>Monkey Bite</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Epistaxis"/>Nasal Bleed</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Poisoning"/>Poisoning</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Rectal Pain"/>Rectal Pain</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Scrotal Pain"/>Scrotal Pain</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Thrombocytopenia"/>Thrombocytopenia</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Transfusion Reaction"/>Transfusion Reaction</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Trauma"/>Trauma</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Vaginal Bleeding"/>Vaginal Bleeding</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Ventilator Managment"/>Ventilator Management</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Wound Management"/>Wound Management</$button>
</center>
It is said that the causes of mitral stenosis are rheumatic fever, rheumatic fever and rheumatic fever. Rarer causes that may be seen in the exam include mucopolysaccharidoses, carcinoid and endocardial fibroelastosis
Features
* mid-late diastolic MurMur (best heard in expiration)
* loud S1, opening snap
* low volume PulSe
* malar flush
* AtrFib
Features of severe MS
* length of murmur increases
* opening snap becomes closer to S2
Chest x-ray
* left atrial enlargement may be seen
Echocardiography
* the normal cross sectional area of the mitral valve is 4-6 sq cm. A 'tight' mitral stenosis implies a cross sectional area of < 1 sq cm
<center>
<img width=500 src="https://www.dropbox.com/s/hk4sgp5de3phgc3/ms1.jpg?raw=1">
</center>
Chest x-ray from a patient with mitral stenosis. This patient has had a sternotomy and a prosthetic mitral valve. There is splaying of the carina with elevation of the left main bronchus, a double right heart border and cardiomegaly. The features are those of left atrial enlargement. Although the entire heart is enlarged, a double contour is seen through the right side of the heart. The more medial line is the enlarged left atrium (white dotted line) and the heart heart border is more lateral (blue dotted line).
Mittelschmerz literally translates to 'middle pain' and refers to abdominal pain associated with ovulation. This mid-cyclical pain is experienced by 20% of women and there are several theories as to why it occurs. One explanation is that is occurs due to a leakage of follicular fluid containing prostaglandins at the time of ovulation, which causes the pain. Another explanation is that the growth of the follicle stretches the surface of the ovary, causing pain.
;Presentation
* Sudden onset of pain in either iliac fossa which then manifests as a generalised pelvic pain.
* Typically, the pain is not severe and varies in duration, lasting from minutes to hours.
* It is self-limiting and resolves within 24 hours of onset.
* Pain may switch side from month to month, depending on the site of ovulation
;Investigations
* There is no specific test to confirm Mittelschmerz and it diagnosed clinically, after taking a full history and examination to exclude other conditions
* No abnormal signs on abdominal or pelvic examination.
;Management
* Mittelschmerz is not harmful and can be controlled with simple analgesia.
!!MMR Vaccine
Children in the UK receive two doses of the Measles, Mumps and Rubella (MMR) vaccine before entry to primary school. This currently occurs at 12-15 months and 3-4 years as part of the routine immunisation schedule
;Contraindications to MMR
* severe immunosuppression
* allergy to neomycin
* children who have received another live vaccine by injection within 4 weeks
* pregnancy should be avoided for at least 1 month following vaccination
* immunoglobulin therapy within the past 3 months (there may be no immune response to the measles vaccine if antibodies are present)
;Adverse effects
* malaise, fever and rash may occur after the first dose of MMR. This typically occurs after 5-10 days and lasts around 2-3 days
```
Vaccination out of schedule
The Green Book recommends allowing 3 months between doses to maximise the response rate. A period of 1 month is considered adequate if the child is greater than 10 years of age. In an urgent situation (e.g. an outbreak at the child's school) then a shorter period of 1 month can be used in younger children.
```
<div id="notecontent">Molluscum contagiosum is a common skin infection caused by molluscum contagiosum virus (MCV), a member of the Poxviridae family. Transmission occurs directly by close personal contact, or indirectly via fomites (contaminated surfaces) such as shared towels and flannels. The majority of cases occur in children (often in children with atopic eczema), with the maximum incidence in preschool children aged 1-4 years.<br><br>Typically, molluscum contagiosum presents with characteristic pinkish or pearly white papules with a central umbilication, which are up to 5 mm in diameter. Lesions appear in clusters in areas anywhere on the body (except the palms of the hands and the soles of the feet). In children, lesions are commonly seen on the trunk and in flexures, but anogenital lesions may also occur. In adults, sexual contact may lead to lesions developing on the genitalia, pubis, thighs, and lower abdomen. Rarely, lesions can occur on the oral mucosa and on the eyelids.<br><br>Self care advice:<br><ul><li>Reassure people that molluscum contagiosum is a self-limiting condition.</li><li>Spontaneous resolution usually occurs within 18 months</li><li>Explain that lesions are contagious, and it is sensible to avoid sharing towels, clothing, and baths with uninfected people (e.g. siblings)</li><li>Encourage people not to scratch the lesions. If it is problematic, consider treatment to alleviate the itch</li><li><span class="concept" data-cid="3834">Exclusion from school, gym, or swimming is not necessary</span></li></ul><br>Treatment is not usually recommended. If lesions are troublesome or considered unsightly, use simple trauma or cryotherapy, depending on the parents' wishes and the child's age:<br><ul><li>Squeezing (with fingernails) or piercing (orange stick) lesions may be tried, following a bath. Treatment should be limited to a few lesions at one time</li><li>Cryotherapy may be used in older children or adults, if the healthcare professional is experienced in the procedure</li><li>Eczema or inflammation can develop around lesions prior to resolution. Treatment may be required if:</li><li>→ Itching is problematic; prescribe an emollient and a mild topical corticosteroid (e.g. hydrocortisone 1%)</li><li>→ The skin looks infected (e.g. oedema, crusting); prescribe a topical antibiotic (e.g. fusidic acid 2%)</li></ul><br>Referral may be necessary in some circumstances:<br><ul><li>For people who are <span class="concept" data-cid="9114">HIV-positive with extensive lesions</span> urgent referral to a HIV specialist</li><li><span id="concept_popover_id_10047" class="concept concept-0 trigger-link" data-cid="10047" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10047'>You've never been tested on this concept</div><br><div id='div_concept_rating10047' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(214,255,0)'>Importance: <b>58</b></span> </div>" data-original-title="Molluscum contagiosum with eyelid or ocular involvement and red eye requires urgent ophthalmology review ">For people with eyelid-margin or ocular lesions and associated red eye urgent referral to an ophthalmologist</span></li><li>Adults with anogenital lesions should be referred to genito-urinary medicine, for screening for other sexually transmitted infections</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd121b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd121.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a><span style="font-size:11px; color:LightGray;"> and with the kind permission of Prof Raimo Suhonen</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd121b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd122b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd122.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd122b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
!!!<center>''MONKEY BITE''</center>
<hr>
* Very common in our ED
* Post Exposure Prophylaxis (PEP) should be started as soon as possible after the bite.
''Category I ''
* Touching or feeding animals
* Licks on intact skin
* Rx: Reassure, nothing to be done.
''Category II''
* Nibbling of uncovered skin
* Minor scratches or abrasions without bleeding
# Wound management
# Administer anti-rabies vaccine immediately
''Category III''
* Single or multiple transdermal bites or scratches.
* Contamination of mucous membrane with saliva (i.e. licks on broken skin)
# Wound Management
# Administer rabies immunoglobulin
# Administer anti-rabies vaccine immediately
* All animal bites in forest or in the wild should be treated as Category III exposures.
''Animals transmitting rabies in India''
# Domestic: Dogs and cats
# Peridomestic: cows, buffaloes, sheep, goat, pigs, donkeys, horses, camels etc.
# Wild: Foxes and jackals, monkeys, mongoose, bear etc.
* Not reported: Bird, squirrel, bats, rodents
* Bites by Bats or Rodents do not ordinarily necessitate rabies vaccination.
* If rabies immunoglobulin (RIG) is not available on first visit, its use can be delayed by a maximum of 7 days from the date of first dose of vaccine.
* Pregnancy and infancy are never contraindications to PEP.
* If the patient comes even months after having been bitten, he/she should be dealt with in the same manner as if the bite has occurred recently.
* PEP is not required in case of consumption of milk of a rabid animal. However it is not recommended to consume milk from an infected animal.
* Consumption/handling of raw meat of a rabid animal requires PEP. Cooking kills rabies virus.
''A. Wound management:''
* Wash the wound immediately (asap) under running tap water for at least 10 minutes.
* Use soap or detergent to wash the wound (if soap is not available then use water only to wash the wound).
* After thorough washing and drying the wound apply disinfectant – e.g. povidone iodine, spirit etc.
* Don’t apply irritants viz. chillie, soil, oils, turmeric, lime, salt, plant juice etc.
* Don’t touch the wound with bare hands.
* Wound washing must be performed even if the patient reports late.
* Postpone suturing if possible; if suturing is at all necessary, it should be performed after cleaning and infiltrating RIG at the depth of wound and only minimum number of loose suture should be applied.
* Don’t cauterize.
* Administer systemic antimicrobial and tetanus toxoid if necessary (follow usual norm of wound management in this regard).
''B. Passive immunization (immunoglobulin/ anti-sera):''
* Human Rabies Immunoglobulin (HRIG) : 20 IU/kg body wt, maximum 1500 IU
* Equine Rabies Immunoglobulin (ERIG) : 40 IU/kg body wt, maximum 3000 IU. We have this available in our pharmacy.
* Either of the above is to be used where indicated – i.e. all Category III bites and also Category II bites in case of immune- compromised persons.
* Local infiltration of rabies immunoglobulin: RIG should be infiltrated in the depth and around each of the wounds to inactivate the locally present rabies viruses.
* Infiltrate as much as possible in the depth and around the wounds; remaining quantity, if any, is to be administered intramuscularly at a site away from the site where vaccine is administered.
* If RIG is insufficient (by volume) for infiltration into all the wounds, dilute it with sterile normal saline (up to twice or thrice the volume).
* Infiltrate into all Category III wounds.
''C. Vaccination:''
* Route of inoculation: Intramuscular or Intradermal.
* Site of inoculation: Deltoid muscle or anterolateral part of thigh.
* Not recommended in gluteal region, since there is chance of low absorption due to the presence of fatty tissue.
<hr>
<center>''Post exposure Vaccine schedule''</center>
<hr>
* The vaccination schedule may be either of the following. However, in healthcare institutions, the latter (Intradermal Regimen) is more cost effective and is mandatory in State Government set-ups except in documented exceptional cases.
''i.Essen Intramuscular Regimen:''<br>
''Standard intramuscular regimen''
* One dose (0.5ml or 1ml) each into deltoid on day 0, 3, 7, 14 and 28.
* Locally infiltrate anti-rabies immunoglobulin on day 0 as described under Passive Immunization.
* In IM route of ARV, switching between brands does not make any difference.
''ii. Intradermal Regimen (approved in India)''<br>
''2 site regimen (Updated Thai regimen)''
* Dose : 0.1 ml
* Site : Upper arm over each deltoid/ antero- lateral aspect of thigh
* Schedule: 2- 2- 2- 0- 2
* Day 0 - 2 sites
* Day 3 - 2 sites
* Day 7 - 2 sites
* Day 14 - No Dose
* Day 28 - 2 sites
''Points to remember for PEP:''
* Day 0 is the day of 1st dose of vaccine given, not the day of bite.
* Never inject the vaccine in the gluteal region.
* Reconstituted vaccine to be used immediately. However, in unforeseen delay the vaccine vial should be stored at 2-8○C after reconstitution and should be used within 6-8 hrs of reconstitution.
* Dose is same for all age groups.
* Switching between IM and ID regimen is not recommended by WHO.
* If the bite is by a dog or cat and the animal is alive & healthy till 10 days after bite or it is humanely killed and its brain is found to be negative for rabies in the lab, vaccination may be stopped after the 3rd dose (dose of day 7).
''Management of re-exposed cases after a full PEP or PrEP:''
* Doses only on day 0 and 3 (these actually serve as booster doses).
* Either intramuscular (0.5 ml/1 ml) or intra- dermal injection (0.1ml at 1 site)
* No RIG needed.
* Proper wound toilet should be done.
* If previous vaccination was incomplete or partial, treat as a fresh case.
''Deviation from recommended PEP/PrEP vaccination schedule:''
* Every effort should be made to adhere to the recommended PEP/PrEP schedule, especially for the first 2 days of treatment.
* Deviation of a few days will not necessitate fresh vaccination from the beginning of the course.
* For most minor delay or interruptions, the vaccination schedule can be shifted and resumed as though the patient were on schedule.
!!Motor neuron disease
is a neurological condition of unknown cause which can present with both upper and lower motor neuron signs. It rarely presents before 40 years and various patterns of disease are recognised including amyotrophic lateral sclerosis, progressive muscular atrophy and bulbar palsy
Riluzole
* prevents stimulation of glutamate receptors
* used mainly in amyotrophic lateral sclerosis
* prolongs life by about 3 months
Respiratory care
* non-invasive ventilation (usually BIPAP) is used at night
* studies have shown a survival benefit of around 7 months
Prognosis
* poor: 50% of patients die within 3 years
---
>TRAINing LUNGS or Motor Neuron Disease
*RILU(TRAIN)zole - Respiratory Care
---
!!Mouth lesions
!!!2 week wait referrals to oral surgery should be done in all of the following cases:
* Unexplained oral ulceration or mass persisting for greater than 3 weeks
* Unexplained red, or red and white patches that are painful, swollen or bleeding
* Unexplained one-sided pain in the head and neck area for greater than 4 weeks, which is associated with ear ache, but does not result in any abnormal findings on otoscopy
* Unexplained recent neck lump, or a previously undiagnosed lump that has changed over a period of 3 to 6 weeks
* Unexplained persistent sore or painful throat
* Signs and symptoms in the oral cavity persisting for more than 6 weeks, that cannot be definitively diagnosed as a benign lesion
The level of suspicion should be higher in patients who are over 40, smokers, heavy drinkers and those who chew tobacco or betel nut (areca nut).
<div id="notecontent">Methicillin-resistant <i>Staphylococcus aureus</i> (MRSA) was one of the first organisms which highlighted the dangers of hospital-acquired infections.<br><br>Who should be screened for MRSA?<br><ul><li>all patients awaiting elective admissions (exceptions include day patients having terminations of pregnancy and ophthalmic surgery. Patients admitted to mental health trusts are also excluded)</li><li>from 2011 all emergency admissions will be screened</li></ul><br>How should a patient be screened for MRSA?<br><ul><li>nasal swab and skin lesions or wounds</li><li>the swab should be wiped around the inside rim of a patient's nose for 5 seconds</li><li>the microbiology form must be labelled 'MRSA screen'</li></ul><br>Suppression of MRSA from a carrier once identified<br><ul><li>nose: mupirocin 2% in white soft paraffin, tds for 5 days</li><li>skin: chlorhexidine gluconate, od for 5 days. Apply all over but particularly to the axilla, groin and perineum</li></ul><br>The following antibiotics are commonly used in the treatment of MRSA infections:<br><ul><li>vancomycin</li><li>teicoplanin</li><li>linezolid</li></ul><br>Some strains may be sensitive to the antibiotics listed below but they should not generally be used alone because resistance may develop:<br><ul><li>rifampicin</li><li>macrolides</li><li>tetracyclines</li><li>aminoglycosides</li><li>clindamycin</li></ul><br>Relatively new antibiotics such as linezolid, quinupristin/dalfopristin combinations and tigecycline have activity against MRSA but should be reserved for resistant cases<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd128b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd128.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd128b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Interaction of MRSA (green bacteria) with a human white cell. The bacteria shown is strain MRSA252, a leading cause of hospital-associated infections in the United States and United Kingdom. Credit: NIAID</div></div>
Of course, we should rule out acute coronary
syndrome but given the history of positional chest
pain for few days, post viral illness with saddle
shaped ST elevation on ECG is indicative of acute
viral pericarditis.
<hr>
Beck's triad consists of hypotension, raised jugular
venous pressure and muffled heart soundsand
suggests cardiac tamponade.
<hr>
The correct answer is D. Unstable angina.
This is defined as angina which occurs at rest or
with minimal exertion, or angina of increasing
frequency or severity.
Stable angina is induced by physical activity and
resolves with rest. Decubitis angina is induced
when lying down. Variant (Prinzmetal's) Angina
occurs at rest as a result of a spasm in the
coronary artery. This is rare and usually occurs at
night. Pulmonary embolism presents with
di#iculty in breathing, chest pain on inspiration,
and palpitations. Diagnosis is based on both the
clinical picture, D-dimer result and CTPA imaging.
Treatment is with anticoaqulants.
<hr>
This girl has aortic stenosis as evidenced by the
ejection systolic murmur and slow rising pulse. In
children of this age with severe valve dysfunction
balloon angioplasty is the first line treatment
before proceeding to surgical valve replacement if
this fails. She may be developing a degree of
heart failure seen by the shortness of breath and
tiredness but balloon angioplasty may correct this
without the need for medication which should be
avoided in a child this age if a corrective surgery
Option is available.
<hr>
Beta blockers or calcium channel blockers are
recommended as first line treatment for angina
(providing that there are no contraindications).
Amlodipine is a calcium channel blocker which is
most appropriate in this case as beta blockers are
contraindicated in asthma.
If both beta blockers and calcium channel
blockers are contraindicated or not tolerated then
one of: isosorbidemononitrate, nicorandil,
lvabradine or Ranolazine can be given dependent
on patient preference and co-morbidities.
Of the other options - Atenolol is incorrect as it is a
beta blockers and is contraindicated in this
patient. Aspirin should be prescribed in this
patient however this option is incorrect as aspirin
is an antiplatelet and the questions asks for an
anti-anginal. Nicorandil 10mg is a K+ channel
activator that is used in angina, but is not
prescribed first line and Bendrofluthiazide is a
thiazide diuretic which is not used in angina
management.
<hr>
The correct answer is B. Malignant mesothelioma
This is a tumour that arises from the pleura that
surrounds the lung. It is related to past exposure
to asbestos (common in ship yard building in the
past); exposure could be up to 45 years before the
onset of the disease. Prognosis is generally poor.
The main differential here is asbestosis which is
less likely for two reasons, first that the exposure
required to cause asbestosis is much more
prolonged than that required to cause malignant
mesothelioma making it a condition that is much
rarer overall. Second, asbestosis causes scarring
on the lung which is not seen in this patient's CT
scan.
Silicosis (also known as "Potter's Rot") is caused
by exposure to silica dust and produces
inflammation and scarring in the form of nodular
lesions in the upper lobes of the lung.
<hr>
The correct answer is F. Churg Strauss Syndrome
A rare autoimmune vasculitis consisting of a triad
of eosinophilia, vasculitis and asthma. It often
begins with sinusitis, new onset/worsening of
existing allergies and then asthma, followed by
systemic vasculitic symptoms. It is associated
with p-ANCA (antibodies) and is treated with
steroids and immunosuppressive medications.
<hr>
Transudate vs Exudate
In order to definitively confirm the
protein count in an effusion, it needs to be
sampled and sent to biochemistry for protein level
analysis. A protein level of less than 25g/L is a
transudate. A protein level greater than 35g/L is an
exudate.
<hr>
Obesity Hypoventilation
This syndrome occurs in clinically obese
individuals (BMI over 30). It is different from
obstructive sleep apnoea as it causes daytime
hypercapnia and longer, more continuous
episodes of hypoventilation overnight (there may
or may not be upper airway obstruction).
Obstructive sleep apnoea is a condition where
there are repeated episodes of intermittent upper
airway collapse during sleep resulting in
sleepiness during the day. However, there is
overlap between the two entities and they may
occur together or in isolation from one another.
The Epworth score is a tool used to measure
daytime sleepiness and is used to identify
obstructive sleep apnoea. The low score indicates
that in this case, obesity hypoventilation is
occurring independently of obstructive sleep
apnoea. Weight loss plays a pivotal role in the
management of this condition. Assisted
ventilation and supplementary oxygen may be
required. A diagnosis of COPD is possible but in
the absence of a smoking history and given the
patient's BMI, obesity hypoventilation is more
likely. A patient with TB may have a contact histor)
and the symptoms would usually include cough,
weight loss and night sweats. From the
information given, there is no obvious history,
signs and symptoms of a pleural effusion such as
stony dull percussion note and absent breath
sounds. Churg-Straus syndrome is a combination
of asthma, eosinophilia and vasculitis therefore
you would also expect extrapulmonary problems.
If symptomatic, sarcoidosis tends to produce a
Droaressive dvsDnoea.
<hr>
Lung Ca investigations
Staging information can be gathered using a CT
and PET CT. CT is considered the gold-standard
over MRI as it has a higher sensitivity for detecting
pulmonary nodules. MRI is still considered for
those patients with a Pancoast tumour or when a
tumour is suspected of invading into the spinal
canal but is not routinely used. Bronchoscopy is
utilised to collect either histology or cytology and
assess operability. Bone scans are utilised if there
is suspected metastasis.
<hr>
Sarcoidosis is a granulomatous condition of
unknown cause. It is often discovered incidentally
as bilateral hilar lymphadenopathy on chest x-ray.
Serum angiotensin converting enzyme (ACE) is
often elevated in sarcoidosis as it often correlates
to total granuloma load; it can also be used to
monitor disease progress and response to
treatment.
Ankylosing spondylitis is a chronic condition of the
sacroiliac joints and spine and can be associated
with apical pulmonary fibrosis. Rheumatoid
arthritis can be associated with fibrosing alveolitis,
obliterative bronchiolitis and pleural effusions. TB
is associated with consolidation, cavitation,
fibrosis and calcification on chest x-ray.
<hr>
Amiodarone is used in the treatment of arrhythmias
and is known to affect the thyroid (hypothyroid in
this case) and can cause reversible microdeposits
within the cornea (classically being dazzled by
headliahts at niaht) and skin rashes.
<hr>
Pulm Fibrosis in Rheumatoid Arthritis (RA)
This patient is taking Methotrexate, an
antimetabolite that inhibits the enzyme
dihydrofolate reductase and interferes with the
folic acid metabolic pathway. Hence it is
prescribed weekly with folic acid in RA. Of note,
both RA and Methotrexate can cause pulmonary
fibrosis.
<hr>
Bronchiectasis is a permanent, irreversible
dilatation of part of the bronchial tree. Chronic
infections permanently dilate the bronchi, leading
to accumulation of thick sputum. High resolution
CT of the chest aids diagnosis. Excessive sputum
production is a typical feature.
Treatment involves frequent antibiotic courses,
chest physiotherapy, steroids and bronchodilators.
Refer all patients with unexplained clubbing for an
urgent chest x-ray.
<hr>
The incidence of lung cancer is 20 times higher
than that of mesothelioma - the closest differential
in this case, and one that might be suggested by
the fact the patient is a builder. 95% of all primary
lung tumours are bronchial carcinomas and it is
important to note that the patient is a lifelong
smoker and that his history of being a builder also
is a risk factor in lung cancer. Bronchial carcinoma
and mesothelioma have similar presentations but
here you are asked for the 'most likely cause '
which statistically must be bronchial carcinoma.
<hr>
Bacterial Endocarditis.
Although one should be alert as to possibility of
TB in a patient with these symptoms, the presence
of Osler's nodes makes endocarditis more likely.
These are tender nodular lesions over the palms.
Other features can include: new heart murmur,
systemic symptoms, Janeway lesions and splinter
haemorrhages. Investigations should include
hlnnrl rl I ltl lroq and nn orhn
<hr>
Epworth Score
This is a short questionnaire that aims to assess
severity of daytime somnolence (sleepiness). It is
used in Obstructive Sleep Apnoea and asks
patients to rate from 1 -3, how likely they are to fall
asleep in 8 particular circumstances (i.e. watching
TV, whilst talking to someone). A score )lO
reauires further investiaation.
<hr>
The Light's Criteria.
This attempts to differentiate between
transudative and exudative pleural effusions
(which is the cause of persistent dyspnoea in this
situation as suggested by the stony dull
percussion of the lung). Effusions have numerous
causes that should be investigated.
The CURB-65 score is used to predict the severity
of pneumonia. The Ranson Criteria is used to
predict the severity of acute pancreatitis. The
Epworth Score measure daytime sleepiness. The
CHADS2 score predicts stroke risk in patients with
atrial fibrillation. The Geneva Score is one score
that can be used to predict the pre-test probability
of pulmonary embolism. The DAS-28 score is the
Disease Activity Score system used for
rheumatoid arthritis. The Duke criteria is used to
diagnose infective endocarditis.
<hr>
The answer is E. Chronic hypoxaemia with a Pa02
on ABG of 8.2kPa
Whilst LTOT is indicated in chronic hypoxaemia,
the British Thoracic Society (BTS) guidelines
advise that that patient should have a Pa02 that is
consistently below 7.3kPa OR stable between 7.3
and 8.0kPa in addition to secondary
polycythaemia or clinical/echocardiographic signs
of pulmonary hypertension. All of the other
conditions are indications for LTOT as needed
along with conditions such as severe chronic
asthma, cystic fibrosis, bronchiectasis, pulmonary
vascular disease and pulmonary malignancy.
<hr>
Pertussis.
Whooping cough involves the three C's:
1) an initial catarrhal stage (resembling an upper
respiratory infection)
ii) the coughing stage - bouts of severe coughing
followed by a high-pitched gasp ('whoop ') and
sometimes vomiting
iii) the convalescence stage - recovery
Vaccination has reduced occurrences of this
condition, antibiotics are mainly useful during the
catarrhal stage, conservative management is the
mainstay of treatment if they are not given in time.
<hr>
Postnasal drip
A history of atopy often co-exists, sufferers usually
describe seasonal worsening of coryzal
symptoms. Possible causes can be explored (i.e.
GORD, sinusitis), however management involves
anti-histamines, occasionally short-term steroids
and deconaestants.
<hr>
Dry cough 4wks post MI
This patient has been started on an angiotensin-
converting-enzyme (ACE) inhibitor post myocardia
infarction, not to mention a statin. a beta blocker
and aspirin. ACE inhibitors lead to an increase in
bradykinin, which causes a dry cough that may
begin within hours of starting the drug, up to
months after. Patients are often either tried on a
different ACE inhibitor or are switched to
Angiotensin 2 blockers.
<hr>
Obstructive sleep apnoea is more common in men
than in women. Symptoms include daytime
somnolence, morning headache, loud snoring,
decreased libido and decreased cognitive
performance.
<hr>
Pneumonia Pathogens
Streptococcus
pneumoniae is most likely to be community acquired
pneumonia, the most common infective organism
is Streptococcus pneumoniae followed by
Haemophilus influenzae and then Mycoplasma
pneumoniae. In hospital acquired pneumonia the
most common causative organism is gram
negative enterobacteria and Staphyloccus aureus.
<hr>
Drug induced Bleeding
This patient is on warfarin for his metallic heart
valve. He will require urgent review and a
coagulation screen as his INR is likely to be
prolonged. The drug chart should be reviewed to
exclude concomitant use of other anticoagulants
(heparin) or antiplatelet drugs, as well as
medications that interfere with warfarin's
metabolism
<hr>
Wegener's granulomatosis
This condition is now more commonly known as
Granulomatosis with polyangiitis (GPA). The most
likely differential would be Goodpasture's
syndrome. GPA is more common than
Goodpasture's and is more likely to involve
nosebleeds making it the more likely cause.
GPA is a multisystem vasculitis primarily affecting
the lungs, the kidneys (glomerulonephritis) and the
upper respiratory tract. A urine dipstick (followed
by renal biopsy if blood present) and chest x-ray
should be performed alongside blood tests
(including cANCA). Treatment comprises steroids
and immunosuppressive therapy.
<hr>
Aspergilloma
A previous history of TB is a risk factor, as
previously formed lung cavities are colonized by
the inhaled fungal species, Aspergillus Fumigatus.
A 'ball shaped ' opacity is seen often in lung apices,
some invade the cavity wall and result in
haemoptysis. There is limited success of anti-
fungals and treatment is symptomatic (surgica
options remain for massive haemoptysis).
<hr>
CURB-65 is a clinical prediction tool used to
predict mortality in community acquired
pneumonia. It is a 6 point score with one point
being scored for each of the following:
Confusion
Urea levels )7mmol
Respiratory rate )30 breaths per minute
Blood pressure below 90 mm Hg or diastolic
below 60 mm Hg
Age over 65.
<hr>
Kelbsiella is a gram negative organism implicated
in nosocomial infections. It can affect
immunocompromised patients, alcoholics and
diabetics quite severely with patients being very
unwell with high fevers, blood-tinged ('red-currant
jelly ') sputum, chills and confusion. Cavitation of
upper lobes may be seen on chest x-ray.
<hr>
Staphylococcus Aureus
Staphylococcus aureus is the most likely bacteria
causing pneumonia in this case. It is introduced
and originates from a contaminated needle.
Pneumocystis jiroveci (f:ormerly P. carinii) and
haemophylus influenza are two organisms that
tend to cause pneumonia in the
immunocompromised patient. Mycoplasma, staph
aureus and H. influenzae can all cause community
acquired pneumonias. Chlamydia and legionella
can cause atypical community acquired
pneumonias. Pseudomonas, Klebsiella and
Staphylococcus aureus are some of the organisms
responsible for hospital acquired pneumonias.
<hr>
Mycoplasma
Haemolytic anaemia and erythema multiforme if
they occur are classical of mycoplasma. A clue in
the history that may indicate infection with
Chlamydia psittaci is exposure to birds. Legionella
tends to occur in fresh water and manmade water
systems. Klebsiella is seen in aspiration
pneumonia and increasingly in alcoholics - there
may be clues in the history to suggest these.
Staph aureus and haemophilus as well as causing
community acquired pneumonia also occur in the
immunocompromised patient. Pneumocystis and
pseudomonas occur in the immunecompromised
also.
<hr>
Clubbing
Clubbing of the nail develops when there is loss of
the normal angle between the nail and then nail
bed, bogginess ofthe nail bed and thickening of
the distal part of the nail. It is seen in many
conditions such as lung carcinoma, infective
endocarditis and Crohn's disease to name but a
few.
Nail clubbing seems to occur with some lung
disorders, but not others. It does not feature in
pneumonia, asthma or COPD.
<hr>
Pyrazinamide
This patient is being treated for active tuberculosis
(TB). Pyrazinamide is a
bacteriostatic/bacteriocidal agent that is used in
combination with three other agents (isoniazid,
rifampicin and usually ethambutol) for the first
eight weeks followed by isoniazid and rifampicin
for the rest of the duration of treatment, which is
usually twelve months. Pyrazinamide can cause an
arthralgia and hyperuricaemia, as well as rashes
and in rare cases hepatitis.
<hr>
Infliximab SidEfx
InHiximab is a tumour necrosis factor alpha (TNF
alpha) blocker which aims to counteract the
overproduction of TNF alpha in the synovium that
occurs in rheumatoid arthritis. One side effect of
infliximab is the exacerbation of congestive
cardiac failure, which has occurred in this case. It
is contraindicated in severe cardiac failure,
demyelinating diseases, history of previous cancer
and active infection. Other side effects include
injection site reactions, infections and reactivation
of TB.
<hr>
Asthma ladder
A 35 year old asthmatic lady presents with worsening
symptoms during the day and at night timed she wakes
up most nights feeling wheezy and short of breath. She
is also using her salbutamol inhaler more frequently.
She works as a cleaner and is finding it increasingly
di#lcult to do her job as a result of her symptoms. Her
current medication is as follows; beclometasone inhaler
800 micrograms/day, salmeterol inhaler 100
micrograms/day, monteleukast 10mg/day and a
salbutamol inhaler when required. Inhaler technique is
checked and it is deemed to be aood.
_____________
The correct answer is A. Increase the
beclometasone to 1000mcg.
This patient is currently on a SABA, moderate dose
inhaled corticosteroid, LTRA + LABA. As they are
poorly controlled, the next step in the current
guidelines is either to go to high dose steroids (e.g
1000mcg), OR to add in an additional drug such as
theophylline, or a long-acting muscarininc receptor
antagonist. Oral steroids would usually be used for
a short term exacerbation. Monteleukast I Omg is
the maximum recommended dose.
<hr>
➤ SIADH
* Airway: Any Lung Disorders - Non Malignant
* Brain: Any CNS Disorders
* Drugs: Sulphonyl Urea - SSRI - NSAIDS
* Cancer: Small Cell - Pan Ca
* Ectopic ADH
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr><hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr><hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr><hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr><hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr><hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr><hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
<hr>
| !MUCUS DIARRHEA |
|Tinidazole|Tab Tiniba 500 mg 4 tab STAT with food|
|Tinidazole+<br>Diloxanide|Tab Amirid BD for 3 days (50 mg/kg/day) with food|
|Metronidazole|Tab Metrogyl 400 mg TDS, 1 wk, with food|
|Metronidazole+<br>Diloxanide|Tab Aristogyl Plus TDS, 1 wk, with food|
|Metronidazole+<br>Furazolidone|Tab Metrogyl-F TDS, 1 wk, with food|
<div id="notecontent">Treatment in multiple sclerosis is focused at reducing the frequency and duration of relapses. There is no cure. <br><br><b>Acute relapse</b><br><br><span class="concept" data-cid="10065">High dose steroids (e.g. oral or IV methylprednisolone)</span> may be given for 5 days to shorten the length of an acute relapse. It should be noted that steroids shorten the duration of a relapse and do not alter the degree of recovery (i.e. whether a patient returns to baseline function)<br><br><b>Disease modifying drugs</b><br><br>Beta-interferon has been shown to reduce the relapse rate by up to 30%. Certain criteria have to be met before it is used:<br><ul><li>relapsing-remitting disease + 2 relapses in past 2 years + able to walk 100m unaided</li><li>secondary progressive disease + 2 relapses in past 2 years + able to walk 10m (aided or unaided)</li><li>reduces number of relapses and MRI changes, however doesn't reduce overall disability</li></ul><br>Other drugs used in the management of multiple sclerosis include:<br><ul><li>glatiramer acetate: immunomodulating drug - acts as an 'immune decoy'</li><li>natalizumab: a recombinant monoclonal antibody that antagonises Alpha-4 Beta-1-integrin found on the surface of leucocytes, thus inhibiting migration of leucocytes across the endothelium across the blood-brain barrier</li><li>fingolimod: sphingosine 1-phosphate receptor modulator, prevents lymphocytes from leaving lymph nodes. An oral formulation is available</li></ul><br><b>Some specific problems</b><br><br>Fatigue<br><ul><li>once other problems (e.g. anaemia, thyroid or depression) have been excluded NICE recommend a trial of amantadine</li><li>other options include mindfulness training and CBT</li></ul><br>Spasticity<br><ul><li>baclofen and gabapentin are first-line. Other options include diazepam, dantrolene and tizanidine</li><li>physiotherapy is important</li><li>cannabis and botox are undergoing evalulation</li></ul><br>Bladder dysfunction<br><ul><li>may take the form of urgency, incontinence, overflow etc</li><li>guidelines stress the importance of getting an ultrasound first to assess bladder emptying - anticholinergics may worsen symptoms in some patients</li><li>if significant residual volume → intermittent self-catheterisation</li><li>if no significant residual volume → anticholinergics may improve urinary frequency</li></ul><br>Oscillopsia (visual fields apper to oscillate)<br><ul><li>gabapentin is first-line</li></ul></div>
!!Multiple sclerosis: features
<div id="notecontent">Patient's with multiple sclerosis (MS) may present with non-specific features, for example around <span class="concept" data-cid="10954">75% of patients have significant lethargy</span>.<br><br>Diagnosis can be made on the basis of two or more relapses and either objective clinical evidence of two or more lesions or objective clinical evidence of one lesion together with reasonable historical evidence of a previous relapse.<br><br>Visual<br><ul><li><span class="concept" data-cid="4322">optic neuritis</span>: common presenting feature</li><li>optic atrophy</li><li><span class="concept" data-cid="5853">Uhthoff's phenomenon</span>: worsening of vision following rise in body temperature</li><li>internuclear ophthalmoplegia</li></ul><br>Sensory<br><ul><li>pins/needles</li><li>numbness</li><li>trigeminal neuralgia</li><li>Lhermitte's syndrome: paraesthesiae in limbs on neck flexion</li></ul><br>Motor<br><ul><li>spastic weakness: most commonly seen in the legs</li></ul><br>Cerebellar<br><ul><li>ataxia: more often seen during an acute relapse than as a presenting symptom</li><li>tremor</li></ul><br>Others<br><ul><li>urinary incontinence</li><li>sexual dysfunction</li><li>intellectual deterioration</li></ul></div>
<div id="body_content">
There are 2 predominant types of multiple system atrophy<br><ul><li>1) MSA-P - Predominant Parkinsonian features</li><li>2) MSA-C - Predominant Cerebellar features</li></ul><br>Shy-Drager syndrome is a type of multiple system atrophy.<br><br>Features<br><ul><li>parkinsonism</li><li><span class="concept" data-cid="4341">autonomic disturbance</span><ul><li><span class="concept" data-cid="10501">erectile dysfunction: often an early feature</span></li><li>postural hypotension</li><li>atonic bladder</li></ul></li><li>cerebellar signs</li></ul></div>
!!!ESM
* AorticStenosis, Aortic Sclerosis
* Pulmonary stenosis
* [[HOCM]]
* atrial septal defect, tetralogy of Fallot
* Flow murmurs
;Ejection is Aortic+ASD - PAN is Mitral+VSD
;EJECTION TETRA
:AORTIC+ASD+HOCM+TOF(Tetra)
---
!!!Early to Mid systolic
*Papillary muscle rupture after MI
---
!!!Holosystolic (pansystolic)
* mitral/tricuspid regurgitation (high-pitched and 'blowing' in character)
* ventricular septal defect ('harsh' in character)
;MR PAN singh tomar
:PAN systolic in MR
;VSD is FULLY HARSH
:VSD - PAN systolic - Harsh
---
!!!Late Systolic
* mitral valve prolapse
* coarctation of aorta
;mitral valve proLAPSE is LATE systolic
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb007b.png">
</center>
!!!eARly diastolic
* aortic regurgitation (high-pitched and 'blowing' in character)
;eARly MORNING(day) HIGH BLOW(flow) VOMITING(Regurgitation)
:AORTIC REGURGITATION & Pulmonary REGURGITATION is eARly DIAstolic
* Graham-Steel murmur (pulmonary regurgitation, again high-pitched and 'blowing' in character)
;GRAHAM STEALS in EARLY in the DAY
:Graham STEEL is EARLY DIA STEALic
---
!!!Mid-late diastolic
* mitral stenosis ('rumbling' in character)
;MS MADAM
:MDM in MS
* Austin-Flint murmur (severe aortic regurgitation, again is 'rumbling' in character)
;AUSTIN is LATE for MDM meeting - His is SEVERELY hungry and his stomach is RUMBLING
:AUSTIN Flint murmur - LATE MDM - SEVERE Aortic regurgitation - RUMBLING in character
---
!!!Continuous machine-like murmur
*patent ductus arteriosus
;PDA MACHINE
HTML
<hr>
<html>
<head>
<title>javascript testing</title>
<link rel="stylesheet" href="js.css">
</head>
<body>
<h1>Todo List</h1>
<hr>
<ul>
<li>"new" - Add a Todo</li>
<li>"list" - List All Todos</li>
<li>"delete" - Remove Specific Todo</li>
<li>"quit" - Quit App</li>
</ul>
<script src="js.js"></script>
</body>
</html>
<hr>
CSS
<hr>
<hr>
JS
<hr>
setTimeout(function(){
//var keyword=prompt("Are we there yet?")
//var patt=/yes/g;
//while(keyword!=="yes" && keyword!=="yeah" && !patt.test(keyword)){
// var keyword=prompt("Are we there yet?")
// }
//alert("Yay, we finally made it!")
//----------------------------------------------------
var myList=["Adi's Todo List"];
var ans=prompt("What would you like to do");
while(ans!=="quit"){
//if answer is "new", add the input to the Todo list and show that it's added on the console
if (ans==="new"){
myList.push(prompt("Name of Todo Item:"));
console.log(myList[(myList.length-1)] + "-is added to the list")
}
//if answer is "list", show the items in listed manner on the console
else if (ans==="list"){
// console.log(myList)
myList.forEach(function show(a,b){console.log(b+":"+a)})
}
//if answer is "delete", ask the number of the listed item, delete it and show it on the console
else if (ans==="delete"){
myList.splice(prompt("Which number item needs to be deleted?"),1);
console.log("Requested list deleted, the new list is:");
myList.forEach(function show(a,b){console.log(b+":"+a)});
}
//if answer is anything else, ask the user to try again
else {alert("invalid input, try again")
}
ans=prompt("What would you like to do");
}
console.log("application closed");
}, 500);
<hr>
!!Mycoplasma Pneumoniae
is a cause of atypical pneumonia which often affects younger patients. It is associated with a number of characteristic complications such as erythema multiforme and cold autoimmune haemolytic anaemia. Epidemics of Mycoplasma pneumoniae classically occur every 4 years. It is important to recognise atypical pneumonia as it may not respond to penicillins or cephalosporins due to it lacking a peptidoglycan cell wall.
Features
* the disease typically has a prolonged and gradual onset
* flu-like symptoms classically precede a dry cough
* bilateral consolidation on x-ray
* complications may occur as below
Complications
* cold agglutins (IgM): may cause an haemolytic anaemia, thrombocytopenia
* erythema multiforme, erythema nodosum
* meningoencephalitis, Guillain-Barre syndrome and other immune-mediated neurological diseases
* bullous myringitis: painful vesicles on the tympanic membrane
* pericarditis/myocarditis
* gastrointestinal: hepatitis, pancreatitis
* renal: acute glomerulonephritis
Investigations
* diagnosis is generally by Mycoplasma serology
* positive cold agglutination test
Management
* doxycycline or a macrolide (e.g. erythromycin/clarithromycin)
<center>
<img width=500 src="https://www.dropbox.com/s/uvjoccyzq91hduv/legionella-mycoplasma.png?raw=1">
</center>
Mycosis fungoides is a rare form of T-cell lymphoma that affects the skin.
Features
* itchy, red patches which are
* lesions tend to be of different colours in contrast to eczema/psoriasis where there is greater homogenicity
* Lymphadenopathy
* HepatoSplenomegaly
<div id="body_content">
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd162b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd162.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd162b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Image showing the plaque stage of mycosis fungoides</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd163b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd163.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd163b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Further image showing the plaque stage of mycosis fungoides</div></div>
NICE produced guidelines on the management of patients following a myocardial infarction (MI) in 2013. Some key points are listed below
!!!All patients should be offered the following drugs:
* dual antiplatelet therapy (aspirin plus a second antiplatelet agent) for 1 year
* ACE inhibitor
* beta-blocker
* statin
;DUAL STAB after MI
:DUAL platelets - STatin - Ace inh - B eta blocker
!!!Some selected lifestyle points
* Diet: advise a Mediterranean style diet, switch butter and cheese for plant oil based products. Do not recommend omega-3 supplements or eating oily fish
* Exercise: advise 20-30 mins a day until patients are 'slightly breathless'
* Sexual activity may resume 4 weeks after an uncomplicated MI. Reassure patients that sex does not increase their likelihood of a further MI. PDE5 inhibitors (e.g, sildenafil) may be used 6 months after a MI. They should however be avoided in patient prescribed either nitrates or nicorandil
Most patients who've had an acute coronary syndrome are now given dual antiplatelet therapy (DAPT). Clopidogrel was previously the second antiplatelet of choice. Now ticagrelor and prasugrel (also ADP-receptor inhibitors) are more widely used. The NICE Clinical Knowledge Summaries now recommend:
* post acute coronary syndrome (medically managed): add ticagrelor to aspirin, stop ticagrelor after 12 months
* post percutaneous coronary intervention: add prasugrel or ticagrelor to aspirin, stop the second antiplatelet after 12 months
* this 12 month period may be altered for people at a high-risk of bleeding or those who at high-risk of further ischaemic events
!!!Aldosterone antagonists
* patients who have had an acute MI and who have symptoms and/or signs of heart failure and left ventricular systolic dysfunction, treatment with an aldosterone antagonist licensed for post-MI treatment (e.g. eplerenone) should be initiated within 3-14 days of the MI, preferably after ACE inhibitor therapy
;NICE NSTEMI/unstable angina guidelines are based on 6 month mortality risk:
* if > 1.5% clopidogrel for 12 months
* if > 3% angiography within 96 hours
!!Myotonic dystrophy
<div id="body_content">
(also called dystrophia myotonica) is an inherited myopathy with features developing at around 20-30 years old. It affects skeletal, cardiac and smooth muscle. There are two main types of myotonic dystrophy, DM1 and DM2. <br><br>Genetics<br><ul><li><span class="concept" data-cid="6262">autosomal dominant</span></li><li>a trinucleotide repeat disorder</li><li>DM1 is caused by a CTG repeat at the end of the DMPK (Dystrophia Myotonica-Protein Kinase) gene on chromosome 19</li><li>DM2 is caused by a repeat expansion of the ZNF9 gene on chromosome 3</li></ul><br>The key differences are listed in table below:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>DM1</b></th><th><b>DM2</b></th></tr></thead><tbody><tr><td>- DMPK gene on chromosome 19<br>- Distal weakness more prominent<br></td><td>- ZNF9 gene on chromosome 3<br>- Proximal weakness more prominent<br>- Severe congenital form not seen</td></tr></tbody></table></div><br>General features<br><ul><li>myotonic facies (long, 'haggard' appearance)</li><li>frontal balding</li><li>bilateral ptosis</li><li>cataracts</li><li>dysarthria</li></ul><br>Other features<br><ul><li>myotonia (tonic spasm of muscle)</li><li>weakness of arms and legs (distal initially)</li><li>mild mental impairment</li><li>diabetes mellitus</li><li>testicular atrophy</li><li>cardiac involvement: heart block, cardiomyopathy</li><li>dysphagia</li></ul></div>
`Obese T2DM with abnormal LFTs - ? non-alcoholic fatty liver disease`
<div id="notecontent">Non-alcoholic fatty liver disease (NAFLD) is now the most common cause of liver disease in the developed world. It is largely caused by obesity and describes a spectrum of disease ranging from:<br><ul><li>steatosis - fat in the liver</li><li>steatohepatitis - fat with inflammation, non-alcoholic steatohepatitis (NASH), see below</li><li>progressive disease may cause fibrosis and liver cirrhosis</li></ul><br>NAFLD is thought to represent the hepatic manifestation of the metabolic syndrome and hence <span id="concept_popover_id_721" class="concept concept-0 trigger-link" data-cid="721" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative721'>You've never been tested on this concept</div><br><div id='div_concept_rating721' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(249,255,0)'>Importance: <b>51</b></span> </div>" data-original-title="Obese T2DM with abnormal LFTs - ? non-alcoholic fatty liver disease">insulin resistance</span> is thought to be the key mechanism leading to steatosis.<br><br>Non-alcoholic steatohepatitis (NASH) is a term used to describe liver changes similar to those seen in alcoholic hepatitis in the absence of a history of alcohol abuse. It is relatively common and thought to affect around 3-4% of the general population. The progression of disease in patients with NASH may be responsible for a proportion of patients previously labelled as cryptogenic cirrhosis.<br><br>Associated factors<br><ul><li><span id="concept_popover_id_721" class="concept concept-0 trigger-link" data-cid="721" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative721'>You've never been tested on this concept</div><br><div id='div_concept_rating721' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(249,255,0)'>Importance: <b>51</b></span> </div>" data-original-title="Obese T2DM with abnormal LFTs - ? non-alcoholic fatty liver disease">obesity</span></li><li><span id="concept_popover_id_721" class="concept concept-0 trigger-link" data-cid="721" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative721'>You've never been tested on this concept</div><br><div id='div_concept_rating721' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(249,255,0)'>Importance: <b>51</b></span> </div>" data-original-title="Obese T2DM with abnormal LFTs - ? non-alcoholic fatty liver disease">type 2 diabetes mellitus</span></li><li>hyperlipidaemia</li><li>jejunoileal bypass</li><li><span class="concept" data-cid="4462">sudden weight loss/starvation</span></li></ul><br>Features<br><ul><li>usually asymptomatic</li><li>hepatomegaly</li><li><span class="concept" data-cid="3981">ALT is typically greater than AST</span></li><li>increased echogenicity on ultrasound</li></ul><br>NICE produced guidelines on the investigation and management of NAFLD in 2016. Key points:<br><ul><li>there is no evidence to support screening for NAFLD in adults, even in at risk groups (e.g. type 2 diabetes)</li><li>the guidelines are therefore based on the management of the <i>incidental</i> finding of NAFLD - typically asymptomatic fatty changes on liver ultrasound</li><li>in these patients, NICE recommends the use of the <span id="concept_popover_id_8322" class="concept concept-1 trigger-link" data-cid="8322" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8322'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating8322' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(168,255,0)'>Importance: <b>67</b></span> </div>" data-original-title="In patients with non-alcoholic fatty liver disease, enhanced liver fibrosis (ELF) testing is recommended to aid diagnosis of liver fibrosis">enhanced liver fibrosis (ELF)</span> blood test to check for advanced fibrosis</li><li>the ELF blood test is a combination of hyaluronic acid + procollagen III + tissue inhibitor of metalloproteinase 1. An algorithm based on these values results in an ELF blood test score, similar to triple testing for Down's syndrome</li></ul><br>An excellent review by Byrne et Al<sup>1</sup> in 2018 reviewed the diagnosis and monitoring of NAFLD. It made the following suggestions if the ELF blood test was not available:<br><ul><li>non-invasive tests may be used to assess the severity of fibrosis</li><li>these include the FIB4 score or NALFD fibrosis score</li><li>these scores may be used in combination with a FibroScan (liver stiffness measurement assessed with transient elastography)</li><li>this combination has been shown to have excellent accuracy in predicting fibrosis</li></ul><br>Patients who are likely to have advanced fibrosis should be referred to a liver specialist. They will then likely have a liver biopsy to stage the disease more accurately.<br><br>Management<br><ul><li>the mainstay of treatment is lifestyle changes (particularly <span id="concept_popover_id_3604" class="concept concept-0 trigger-link" data-cid="3604" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3604'>You've never been tested on this concept</div><br><div id='div_concept_rating3604' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(81,255,0)'>Importance: <b>84</b></span> </div>" data-original-title="Weight loss is the best first line management for NAFLD">weight loss</span>) and monitoring</li><li>there is ongoing research into the role of gastric banding and insulin-sensitising drugs (e.g. metformin, <span class="concept" data-cid="1538">pioglitazone</span>)</li></ul><br><b>References</b><br>1. BMJ 2018;362:k2734</div>
Around in 1% of adults in the UK have nasal polyps. They are around `2-4 times more common in middle aged men and are not commonly seen in children or the elderly`
;Associations
* asthma* (particularly late-onset asthma)
* aspirin sensitivity*
* infective sinusitis
* cystic fibrosis
* Kartagener's syndrome
* Churg-Strauss syndrome
;Features
* nasal obstruction
* rhinorrhoea, sneezing
* poor sense of taste and smell
Unusual features which always require further investigation include unilateral symptoms or bleeding.
;Management
* all patients with suspected nasal polyps `should be referred to ENT for a full examination`
* topical corticosteroids shrink polyp size in around 80% of patients
*the association of asthma, aspirin sensitivity and nasal polyposis is known as `Samter's triad`
Nasolacrimal duct obstruction is the most common cause of a persistent watery eye in an infant. It is caused by an imperforate membrane, usually at the lower end of the lacrimal duct. Around 1 in 10 infants have symptoms at around one month of age
Management
teach parents to massage the lacrimal duct
symptoms resolve in 95% by the age of one year. Unresolved cases should be referred to an ophthalmologist for consideration of probing, which is done under a light general anaesthetic
!!!<center>''NAUSEA & VOMITING''</center>
<hr>
//A 39-year-old man is admitted with diffuse abdominal pain and fever. Later that evening he has severe nausea and vomiting//
* Immediate Questions.
* What are the patient’s vital signs? Fever suggests an inflammatory process such as gastroenteritis, peritonitis, or cholecystitis.
* Hypotension may be secondary to volume depletion or associated sepsis.
* Hypertension and bradycardia may reflect increased intracranial pressure.
* When do the nausea and vomiting occur? Are they related to meals?
* Vomiting during or soon after a meal suggests psychogenic causes or may be seen with pyloric channel ulcer, pancreatitis, or biliary tract disease.
* If abdominal pain is relieved with vomiting, an ulcer is more likely.
* Vomiting an hour or more after a meal is more characteristic of pancreatitis or motility disorders, such as diabetic gastroparesis and postvagotomy.
* Nausea and vomiting early in the morning on arising are often associated with alcoholism, pregnancy, uremia, and increased ICP.
* What are the appearance and volume of the vomitus? Large amounts of vomitus or secretions usually indicate partial or complete bowel obstruction, Bilious?
* A fecal smell suggests lower intestinal obstruction.
* Blood or coffee-ground? Upper GI bleed
* Alcoholic? NSAIDs?
* Pancreatitis or acute gastritis can be caused by ethanol and result in nausea and vomiting.
* Is there associated abdominal pain?
* Differential diagnosis:
* Gastric outlet obstruction: PUD, prior abdominal surgery, or neoplasms?
* Small or large bowel obstruction?
* Pancreatitis/Biliary colic/Intestinal ischemia.
* Pyelonephritis or nephrolithiasis?
* Hepatitis?
* Appendicitis. RLQ pain + fever + leukocytosis
* Diverticulitis. Lower abdominal pain + fever
* Perforation: usually presents as acute abdomen.
* Pelvic inflammatory disease (PID)?
* Acute MI, especially involving the inferior wall, can present with nausea & vomiting; chest pain may be absent.
* Intracranial etiology: Tumor or mass lesions leading to increased intracranial pressure?
* Bacterial and viral meningitis?
* Migraine headache. Usually a unilateral headache, with photophobia and history of similar headaches.
* Labyrinthitis?
* Uremia? Hepatic failure? Adrenal insufficiency?
* Metabolic acidosis?
* Electrolyte abnormalities. Hypercalcemia, hyperkalemia, and hypokalemia can cause nausea.
* Acute gastroenteritis. Common in the outpatient setting with “food poisoning” from bacterial endotoxins. Diarrhea is often present.
* Pregnancy. Especially during the first trimester.
* Electrolytes. Severe vomiting may lead to various electrolyte disturbances, such as hypokalemia, hypochloremia, and metabolic alkalosis.
* Get CBC, KFT, LFT, Urinalysis, Amylase and lipase, ABG, Pregnancy test
* Acute abdominal series (KUB). Air–fluid levels are seen in obstruction; free air under the diaphragm indicates perforation.
* ECG to R/O MI
* CT abdomen and pelvis: Especially useful in the evaluation of the solid organs including pancreas, liver, and kidneys.
* Abdominal ultrasound
* A nasogastric tube should be used for decompression if obstruction is present.
* Commonly used medications are listed here.
* Inj Prochlorperazine (Stemetil) 10 mg Q 4–6 hr
* Inj Ondansetron (Emeset) 8 mg bid
* Inj Metoclopramide (Perinorm) IV
* Nausea and vomiting of pregnancy
* Pyridoxine-doxylamine succinate combination
* If vomiting persists but without dehydration:
* Diphenhydramine 25-50 mg orally q4-6h
* Cinnarizine 25 mg q6h
* If symptoms do not improve, add prochlorperazine or metoclopramide
* For women with vomiting, dehydration
* Inj NS bolus
* IV antiemetics; ondansetron
| !NAUSEA & VOMITING DRUGS |<|
|Metoclopramide|Tab Perinorm 10 mg TDS, 1 wk 30 minutes before meals or food and at bedtime<br>Inj Perinorm 1 amp IM STAT|
|Cinnarizine|Tab Stugeron 25 mg TDS, 1 wk|
|Cinnarizine+<br>Domp|Tab Stugil 25 mg TDS, 1 wk|
|Dimenhydrinate|Tab Draminate 50 mg TDS, 1 wk|
|Domperidone|Tab Domstal 10 mg TDS, 15-30 minutes before meals and at bedtime if needed. 1 wk<br>Syr Domstal 5mg/5ml 1 tsp TDS, 15-30 minutes before meals and at bedtime if needed. 1 wk (0.2/kg-dose)|
|Granisetron|Tab Graniset 2 mg OD, 1 wk|
|Hydroxyzine|Tab Atarax 25 mg TDS, 5 days|
|Lorazepam|Tab Ativan 1 mg every 4-6 hours as needed|
|Meclizine|Tab Diligan 12.5 mg BD, 1 wk|
|Ondansetron|Tab Vomikind 4 mg TDS, 3 days<br>Inj Vomikind 1 amp IM STAT<br>Syr Emeset 2 mg/5ml TDS, 3 days (0.1/kg-dose)|
|Prochlorperazine|Tab Stemetil 5 mg TDS, 1 wk|
|Promethazine|Tab Phenergan/Avomine 25 mg TDS, 1 wk|
<div id="body_content">
The table below gives characteristic exam question features for conditions causing neck lumps:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Condition</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><b><span class="concept" data-cid="7621">Reactive lymphadenopathy</span></b></td><td>By far the most common cause of neck swellings. There may be a history of local infection or a generalised viral illness</td></tr><tr><td><b><span class="concept" data-cid="7620">Lymphoma</span></b></td><td>Rubbery, painless lymphadenopathy<br>The phenomenon of pain whilst drinking alcohol is very uncommon<br>There may be associated night sweats and splenomegaly</td></tr><tr><td><b>Thyroid swelling </b></td><td>May be hypo-, eu- or hyperthyroid symptomatically<br>Moves upwards on swallowing</td></tr><tr><td><b>Thyroglossal cyst</b></td><td>More common in patients < 20 years old<br>Usually midline, between the isthmus of the thyroid and the hyoid bone<br>Moves upwards with protrusion of the tongue<br>May be painful if infected</td></tr><tr><td><b><span class="concept" data-cid="7623">Pharyngeal pouch</span></b></td><td>More common in older men<br>Represents a posteromedial herniation between thyropharyngeus and cricopharyngeus muscles<br>Usually not seen but if large then a midline lump in the neck that gurgles on palpation<br>Typical symptoms are dysphagia, regurgitation, aspiration and chronic cough</td></tr><tr><td><b><span class="concept" data-cid="7624">Cystic hygroma</span></b></td><td>A congenital lymphatic lesion (lymphangioma) typically found in the neck, classically on the left side<br>Most are evident at birth, around 90% present before 2 years of age</td></tr><tr><td><b><span class="concept" data-cid="7625">Branchial cyst</span></b></td><td>An oval, mobile cystic mass that develops between the sternocleidomastoid muscle and the pharynx<br>Develop due to failure of obliteration of the second branchial cleft in embryonic development<br>Usually present in early adulthood</td></tr><tr><td><b><span class="concept" data-cid="7626">Cervical rib</span></b></td><td>More common in adult females<br>Around 10% develop thoracic outlet syndrome</td></tr><tr><td><b>Carotid aneurysm</b></td><td>Pulsatile lateral neck mass which doesn't move on swallowing</td></tr></tbody></table></div></div>
!!Necrotising enterocolitis
is one of the leading causes of death among premature infants. Initial symptoms can include feeding intolerance, abdominal distension and bloody stools, which can quickly progress to abdominal discolouration, perforation and peritonitis.
!!!Abdominal x-rays are useful when diagnosing necrotising enterocolitis, as they can show:
* dilated bowel loops (often asymmetrical in distribution)
* bowel wall oedema
* pneumatosis intestinalis (intramural gas)
* portal venous gas
* pneumoperitoneum resulting from perforation
* air both inside and outside of the bowel wall (Rigler sign)
* air outlining the falciform ligament (football sign)
Neonatal blood spot screening (previously called the Guthrie test or 'heel-prick test') is performed at 5-9 days of life
* The following conditions are currently screened for:
* congenital hypothyroidism
* cystic fibrosis
* sickle cell disease
* phenylketonuria
* medium chain acyl-CoA dehydrogenase deficiency (MCADD)
* maple syrup urine disease (MSUD)
* isovaleric acidaemia (IVA)
* glutaric aciduria type 1 (GA1)
* homocystinuria (pyridoxine unresponsive) (HCU)
!!Causes of intestinal obstruction with bilious vomiting in neonates
<table class="table table-bordered"><tbody><tr><td><b>Disorder</b></td><td><b>Incidence and causation</b></td><td><b>Age at presentation</b></td><td><b>Diagnosis</b></td><td><b>Treatment</b></td></tr><tr><td>Duodenal atresia</td><td>1 in 5000 (higher in Downs syndrome)</td><td>Few hours after birth</td><td>AXR shows double bubble sign, contrast study may confirm</td><td>Duodenoduodenostomy</td></tr><tr><td>Malrotation with volvulus</td><td>Usually cause by incomplete rotation during embryogenesis</td><td>Usually 3-7 days after birth, volvulus with compromised circulation may result in peritoneal signs and haemodynamic instability</td><td>Upper GI contrast study may show DJ flexure is more medially placed, USS may show abnormal orientation of SMA and SMV</td><td>Ladd's procedure</td></tr><tr><td>Jejunal/ ileal atresia</td><td>Usually caused by vascular insufficiency in utero, usually 1 in 3000</td><td>Usually within 24 hours of birth</td><td>AXR will show air-fluid levels</td><td>Laparotomy with primary resection and anastomosis</td></tr><tr><td>Meconium ileus</td><td>Occurs in between 15 and20% of those babies with cystic fibrosis, otherwise 1 in 5000</td><td>Typically in first 24-48 hours of life with abdominal distension and bilious vomiting</td><td>Air - fluid levels on AXR, sweat test to confirm cystic fibrosis</td><td>Surgical decompression, serosal damage may require segmental resection</td></tr><tr><td>Necrotising enterocolitis</td><td>Up to 2.4 per 1000 births, risks increased in prematurity and inter-current illness</td><td>Usually second week of life</td><td>Dilated bowel loops on AXR, pneumatosis and portal venous air</td><td>Conservative and supportive for non perforated cases, laparotomy and resection in cases of perforation of ongoing clinical deterioration</td></tr></tbody></table>
`Jaundice in the first 24 hrs is always pathological`
!!!Causes of jaundice in the first 24 hrs
* rhesus haemolytic disease
* ABO haemolytic disease
* hereditary spherocytosis
* glucose-6-phosphodehydrogenase
Jaundice in the neonate from the c. 2-14 days is common (up to 40%) and usually physiological. It is more commonly seen in breastfed babies
!!!If there are still signs of jaundice after 14 days a prolonged jaundice screen is performed, including:
* conjugated and unconjugated bilirubin: the most important test as a raised conjugated bilirubin could indicate biliary atresia which requires urgent surgical intervention
* direct antiglobulin test (Coombs' test)
* TFTs
* FBC and blood film
* urine for MC&S and reducing sugars
* U&Es and LFTs
!!!Causes of prolonged jaundice
* biliary atresia
* hypothyroidism
* galactosaemia
* urinary tract infection
* breast milk jaundice
* congenital infections e.g. CMV, toxoplasmosis
* DuodenalAtresia
** Bilious vomiting with in 2-3 days after birth
* PyloricStenosis
** presents at 6 wks
** Non-bilious vomiting
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="AKI Protocol"/>AKI Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="CKD Protocol"/>CKD Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Dyselectrolytemia Protocol"/>Dyselectrolytemia Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Dysuria"/>Dysuria</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Flank Pain"/>Flank Pain</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Foley Catheter Problems"/>Foley Catheter Problems</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hematuria"/>Hematuria</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hypertension"/>Hypertension</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Oliguria & Anuria"/>Oliguria & Anuria</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Acute Urinary Retention"/>Urinary Retention</$button>
</center>
<div id="notecontent">Contrast media <span class="concept" data-cid="9671">nephrotoxicity</span> may be defined as a 25% increase in creatinine occurring within 3 days of the intravascular administration of contrast media.<br><br>Risk factors include<br><ul><li>known renal impairment (especially diabetic nephropathy)</li><li>age > 70 years</li><li>dehydration</li><li>cardiac failure</li><li>the use of nephrotoxic drugs such as NSAIDs</li></ul><br><span class="concept" data-cid="9796">Contrast-induced nephropathy occurs 2 -5 days after administration.</span><br><br>Prevention<br><ul><li>the evidence base currently supports the use of <span class="concept" data-cid="9609">intravenous 0.9% sodium chloride</span> at a rate of 1 mL/kg/hour for 12 hours pre- and post- procedure. There is also evidence to support the use of isotonic sodium bicarbonate</li><li>N-acetylcysteine has been given in the past but recent evidence suggests it is not effective*</li></ul><br>* Outcomes after Angiography with Sodium Bicarbonate and Acetylcysteine. N Engl J Med. 2018;378(7):603</div>
Neuropathic pain may be defined as pain which arises following damage or disruption of the nervous system. It is often difficult to treat and responds poorly to standard analgesia.
Examples include:
* diabetic neuropathy
* post-herpetic neuralgia
* trigeminal neuralgia
* prolapsed intervertebral disc
NICE updated their guidance on the management of neuropathic pain in 2013:
* first-line treatment*: amitriptyline, duloxetine, gabapentin or pregabalin
* if the first-line drug treatment does not work try one of the other 3 drugs
* tramadol may be used as 'rescue therapy' for exacerbations of neuropathic pain
* topical capsaicin may be used for localised neuropathic pain (e.g. post-herpetic neuralgia)
* pain management clinics may be useful in patients with resistant problems
*please note that for some specific conditions the guidance may vary. For example carbamazepine is used first-line for trigeminal neuralgia
<div id="body_content">
There are two types of neurofibromatosis, NF1 and NF2. Both are inherited in an <span class="concept" data-cid="6263">autosomal dominant</span> fashion<br><br>NF1 is also known as von Recklinghausen's syndrome. It is caused by a gene mutation on <span class="concept" data-cid="7368">chromosome 17</span> which encodes neurofibromin and affects around 1 in 4,000<br><br>NF2 is caused by gene mutation on <span class="concept" data-cid="7369">chromosome 22</span> and affects around 1 in 100,000<br><br><b>Features</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b><span class="concept" data-cid="7370">NF1</span></b></th><th><b>NF2</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="7365">Café-au-lait spots</span> (>= 6, 15 mm in diameter)<br><span class="concept" data-cid="2379">Axillary/groin freckles</span><br>Peripheral neurofibromas<br><span class="concept" data-cid="7366">Iris hamatomas (Lisch nodules)</span> in > 90%<br>Scoliosis<br><span class="concept" data-cid="5584">Pheochromocytomas</span></td><td><span class="concept" data-cid="5107">Bilateral vestibular schwannomas</span><br>Multiple intracranial schwannomas, mengiomas and ependymomas</td></tr></tbody></table></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd911b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd911.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd911b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of neurofibromatosis and tuberous sclerosis. Note that whilst they are both autosomal dominant neurocutaneous disorders there is little overlap otherwise</div></div>
---
>SCOLIosis
*Scoliosis - Cafe-au-lait - Ocular Lisch nodules(iris hamartomas)
---
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Coma-Confusion"/>Coma, Change in Mental Status</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Unconscious Pt Protocol"/>Unconscious Pt Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Dizziness"/>Dizziness</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Headache"/>Headache</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Intracranial Hemorrhage Protocol"/>Intracranial H'age Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Ischemic Stroke Protocol"/>Ischemic Stroke Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Meningitis Protocol"/>Meningitis Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Seizures"/>Seizures</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Seizures Protocol"/>Seizures Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Weakness"/>Weakness</$button>
</center>
!!!<center>''NEUROSYPHILIS''</center>
<hr>
* ''Preferred:'' Penicillin G benzathine 2.4 million units IM once
* ''Alternatives'' (choose one):
* Doxycycline 100 mg BD for 14 days
* Ceftriaxone 1 to 2 g daily IM/IV for 10-14 days
* Tetracycline 500 mg QID for 14 days
* Amoxicillin 3 g plus probenecid 500 mg, both given orally twice daily for 14 days
!!!<center>''NG TUBE INSERTION''</center>
<center><iframe width="806" height="453" src="https://www.youtube.com/embed/WZvIw0SnYrE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
Nicorandil is a vasodilatory drug used to treat angina. It is a potassium-channel activator with vasodilation is through activation of guanylyl cyclase which results in increase cGMP.
Adverse effects
* headache
* flushing
* anal ulceration
Contraindications
* left ventricular failure
|!Dosage form|!Level of Nicotine Dependency |!Generic product|!Dosage instructions|
|Patches|''Smoking with 10 minutes of waking use (24 hour patch)''<br><br>High Dependency (More than 10 cigarettes a day): start with High strength patches and step down<br><br>Lower Dependency(Less than 10 cigarettes a day): Start with medium strength and step down|High strength Nicotine transdermal patches 21mg/24 hours patch<br><br>Medium strength Nicotine transdermal patches 14mg/24 hours patch<br><br>Low strength Nicotine transdermal patches 7 mg/24 hours patch|Prescribe starting strength in 14 day intervals for 6-8weeks, and then reduce to each of the subsequent lower strengths (in 14 day intervals) for 2 weeks each|
|~|''Does not smoke within 10 minutes of waking use (16 hour patch)''<br><br>High Dependency (More than 10 cigarettes a day): start with High strength patches and step down<br><br>Lower Dependency(Less than 10 cigarettes a day): Start with medium strength and step down|High strength Nicotine transdermal patches 25 mg/16 hours patch<br><br>Medium strength Nicotine transdermal patches 15 mg/16 hours patch<br><br>Low strength Nicotine transdermal patches 10 mg/16 hours patch|~|
Nicotinic acid (niacin) is used in the treatment of patients with hyperlipidaemia, although its use is limited by side-effects. As well as lowering cholesterol and triglyceride concentrations it also raises HDL levels.
Adverse effects
* flushing: mediated by prostaglandins
* impaired glucose tolerance
* myositis
Nitrates are a group of drugs which have vasodilating effects. The main indications for their use is in the management of angina and the acute treatment of heart failure. Sublingual glyceryl trinitrate is the most common drug used in patients with ischaemic heart disease to relieve angina attacks.
Mechanism of action
* nitrates cause the release of nitric oxide in smooth muscle, activating guanylate cyclase which then converts GTP to cGMP, which in turn leads to a fall in intracellular calcium levels
* in angina they both dilate the coronary arteries and also reduce venous return which in turn reduces left ventricular work, reducing myocardial oxygen demand
Side-effects
* hypotension
* tachycardia
* headaches
* flushing
Nitrate tolerance
* many patients who take nitrates develop tolerance and experience reduced efficacy
* the BNF advises that patients who develop tolerance should take the second dose of isosorbide mononitrate after 8 hours, rather than after 12 hours. This allows blood-nitrate levels to fall for 4 hours and maintains effectiveness
* this effect is not seen in patients who take modified release isosorbide mononitrate
<hr><center>''NITROGLYCERINE''</center><hr>
<center>''Adult Dosage''</center><hr>
* Inj NITROPLUS (5 mg/5 ml) (nitroglycerin) Mix 1 amp in 500 cc D5W and start at 10 dps/min, Increase by 10 dps/min every 10 min for symptomatic relief. (Max 40 dps/min) [St 5 to 10 µg/min, inc by 5 q10min to 20 µg/min. Max 400 µg/min.]
<hr><center>''NITROPRUSSIDE''</center><hr>
<center>''Adult Dosage''</center><hr>
''Acute hypertension:''
* Initial I.V: 0.25-0.3 mcg/kg/minute; may be titrated by 0.5 mcg/kg/minute every few minutes to achieve desired hemodynamic effect; usual dose: 3 mcg/kg/minute; maximum dose: 10 mcg/kg/minute.
''Acute decompensated heart failure: I.V.:''
* Initial I.V: 5-10 mcg/minute; may be titrated rapidly (eg, up to every 5 minutes) to achieve desired hemodynamic effect; usual dosage range: 5-300 mcg/minute.
* Doses >400 mcg/minute are not recommended due to minimal added benefit and increased risk for thiocyanate toxicity
<center>
|!Inj Nitroside(Nitroprusside) 50 mg (1 amp) in 50 ml NS (Rate at ml/hr)|<|<|<|<|<|<|<|<|<|<|<|<|
|!mcg/kg/min|!0.25|!0.75|!1.25|!1.75|!2.25|!2.75|!3.25|!3.75|!4.25|!4.75|!5.25|!5.75|
|!50 kg| 0.75 | 2.25 | 3.75 | 5.25 | 6.75 | 8.25 | 9.75 | 11.25 | 12.75 | 14.25 | 15.75 | 17.25 |
|!55 kg| 0.83 | 2.48 | 4.13 | 5.78 | 7.43 | 9.08 | 10.73 | 12.38 | 14.03 | 15.68 | 17.33 | 18.98 |
|!60 kg| 0.90 | 2.70 | 4.50 | 6.30 | 8.10 | 9.90 | 11.70 | 13.50 | 15.30 | 17.10 | 18.90 | 20.70 |
|!65 kg| 0.98 | 2.93 | 4.88 | 6.83 | 8.78 | 10.73 | 12.68 | 14.63 | 16.58 | 18.53 | 20.48 | 22.43 |
|!70 kg| 1.05 | 3.15 | 5.25 | 7.35 | 9.45 | 11.55 | 13.65 | 15.75 | 17.85 | 19.95 | 22.05 | 24.15 |
|!75 kg| 1.13 | 3.38 | 5.63 | 7.88 | 10.13 | 12.38 | 14.63 | 16.88 | 19.13 | 21.38 | 23.63 | 25.88 |
|!80 kg| 1.20 | 3.60 | 6.00 | 8.40 | 10.80 | 13.20 | 15.60 | 18.00 | 20.40 | 22.80 | 25.20 | 27.60 |
|!85 kg| 1.28 | 3.83 | 6.38 | 8.93 | 11.48 | 14.03 | 16.58 | 19.13 | 21.68 | 24.23 | 26.78 | 29.33 |
|!90 kg| 1.35 | 4.05 | 6.75 | 9.45 | 12.15 | 14.85 | 17.55 | 20.25 | 22.95 | 25.65 | 28.35 | 31.05 |
|!95 kg| 1.43 | 4.28 | 7.13 | 9.98 | 12.83 | 15.68 | 18.53 | 21.38 | 24.23 | 27.08 | 29.93 | 32.78 |
|!100 kg| 1.50 | 4.50 | 7.50 | 10.50 | 13.50 | 16.50 | 19.50 | 22.50 | 25.50 | 28.50 | 31.50 | 34.50 |
</center>
The British Thoracic Society (BTS) published guidelines in 2002 on the use of non-invasive ventilation in acute respiratory failure. Following these the Royal College of Physicians published guidelines in 2008.
Non-invasive ventilation - key indications
* COPD with respiratory acidosis pH 7.25-7.35*
* type II respiratory failure secondary to chest wall deformity, neuromuscular disease or obstructive sleep apnoea
* cardiogenic pulmonary oedema unresponsive to CPAP
* weaning from tracheal intubation
Recommended initial settings for bi-level pressure support in COPD
* Expiratory Positive Airway Pressure (EPAP): 4-5 cm H2O
* Inspiratory Positive Airway Pressure (IPAP): RCP advocate 10 cm H20 whilst BTS suggest 12-15 cm H2O
* back up rate: 15 breaths/min
* back up inspiration:expiration ratio: 1:3
* the BTS guidelines state that NIV can be used in patients who are more acidotic (i.e. pH < 7.25) but that a greater degree of monitoring is required (e.g. HDU) and a lower threshold for intubation and ventilation should be used
!!Neuroleptic malignant syndrome
is a rare but dangerous condition seen in patients taking <span id="concept_popover_id_10274" class="concept concept-0 trigger-link" data-cid="10274" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10274'>You've never been tested on this concept</div><br><div id='div_concept_rating10274' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(35,255,0)'>Importance: <b>93</b></span> </div>" data-original-title="Neuroleptic malignant syndrome is a life-threatening reaction that can occur in response to antipsychotic medication">antipsychotic medication</span>. It carries a mortality of up to 10% and can also occur with atypical antipsychotics. It may also occur with <span class="concept" data-cid="2151">dopaminergic drugs (such as levodopa) for Parkinson's disease, usually when the drug is suddenly stopped </span>or the dose reduced.<br><br>The pathophysiology is unknown but one theory is that the dopamine blockade induced by antipsychotics triggers massive glutamate release and subsequent neurotoxicity and muscle damage.<br><br>It occurs within hours to days of starting an antipsychotic (antipsychotics are also known as neuroleptics, hence the name) and the <span class="concept" data-cid="3304">typical features</span> are:<br><ul><li>pyrexia</li><li>muscle rigidity</li><li>autonomic lability: typical features include hypertension, tachycardia and tachypnoea</li><li>agitated delirium with confusion</li></ul><br>A <span class="concept" data-cid="9507">raised creatine kinase is present in most cases</span>. <span class="concept" data-cid="9644">Acute kidney injury</span> (secondary to rhabdomyolysis) may develop in severe cases. A <span class="concept" data-cid="10072">leukocytosis</span> may also be seen<br><br>Management<br><ul><li>stop antipsychotic</li><li>patients should be transferred to a medical ward if they are on a psychiatric ward and often they are nursed in intensive care units</li><li>IV fluids to prevent renal failure</li><li><span class="concept" data-cid="4616">dantrolene</span> may be useful in selected cases<ul><li>thought to work by decreasing excitation-contraction coupling in skeletal muscle by binding to the ryanodine receptor, and decreasing the release of calcium from the sarcoplasmic reticulum</li></ul></li><li>bromocriptine, dopamine agonist, may also be used</li></ul><br>
<center>
<img width=600 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd921b.png"></center>
<div class="imagetext">Venn diagram showing contrasting serotonin syndrome with neuroleptic malignant syndrome. Note that both conditions can cause a raised creatine kinase (CK) but it tends to be more associated with NMS.</div>
<div id="notecontent">The table below summaries the three NOACs: dabigatran, rivaroxaban and apixaban.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th>Dabigatran</th><th>Rivaroxaban</th><th>Apixaban</th></tr></thead><tbody><tr><td><b>UK brand name</b></td><td>Pradaxa</td><td>Xarelto</td><td>Eliquis</td></tr><tr><td><b>Mechanism of action</b></td><td>Direct thrombin inhibitor</td><td>Direct factor Xa inhibitor</td><td>Direct factor Xa inhibitor</td></tr><tr><td><b>Route</b></td><td>Oral</td><td>Oral</td><td>Oral</td></tr><tr><td><b>Excretion</b></td><td>Majority renal</td><td>Majority liver</td><td>Majority faecal</td></tr><tr><td><b>NICE indications</b></td><td>Prevention of VTE following hip/knee surgery<br><br>Treatment of DVT and PE<br><br>Prevention of stroke in non-valvular AF*</td><td>Prevention of VTE following hip/knee surgery <br><br>Treatment of DVT and PE<br><br>Prevention of stroke in non-valvular AF*</td><td>Prevention of VTE following hip/knee surgery<br><br>Treatment of DVT and PE<br><br>Prevention of stroke in non-valvular AF*</td></tr></tbody></table></div><br>*NICE stipulate that certain other risk factors should be present. These are complicated and differ between the NOACs but generally require one of the following to be present:<br><ul><li>prior stroke or transient ischaemic attack</li><li>age 75 years or older</li><li>hypertension</li><li>diabetes mellitus</li><li>heart failure</li></ul></div>
---
* The antidote for warfarin is vitamin K.
* The antidote for DAbigatran is IDARUcizumab.
* The antidote for heparin is protamine sulfate.
---
>2 for 2
*IDARU for DAbigatran
---
>Can't Stop APEX RIVER flood
*There are no antidotes for rivaroxaban or apixaban.
---
<div id="notecontent">Overview<br><ul><li>inflammation of subcutaneous fat</li><li>typically causes tender, erythematous, nodular lesions</li><li>usually occurs over shins, may also occur elsewhere (e.g. forearms, thighs)</li><li>usually resolves within 6 weeks</li><li>lesions heal without scarring</li></ul><br>Causes<br><ul><li>infection<ul><li><span class="concept" data-cid="10584">streptococci</span></li><li><span class="concept" data-cid="8609">tuberculosis</span></li><li>brucellosis</li></ul></li><li>systemic disease<ul><li><span class="concept" data-cid="5179">sarcoidosis</span></li><li>inflammatory bowel disease</li><li>Behcet's</li></ul></li><li>malignancy/lymphoma</li><li>drugs<ul><li>penicillins</li><li>sulphonamides</li><li>combined oral contraceptive pill</li></ul></li><li>pregnancy</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx005.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd006b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd006.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a><span style="font-size:11px; color:LightGray;"> and with the kind permission of Prof Raimo Suhonen</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsd006b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
!!Non-gonococcal urethritis
(NGU, sometimes referred to as non-specific urethritis) is a term used to describe the presence of urethritis when a gonococcal bacteria are not identifiable or the initial swab. A typical case would be a male who presented to a GUM clinic with a purulent urethral discharge and dysuria. A swab would be taken in clinic, microscopy performed which showed neutrophils but no Gram negative diplococci (i.e. no evidence of gonorrhoea). Clearly this patient requires immediate treatment prior to waiting for the Chlamydia test to come back and hence an initial diagnosis of NGU is made.
Causative organisms include:
* Chlamydia trachomatis - most common cause
* Mycoplasma genitalium - thought to cause more symptoms than Chlamydia
Management
* contact tracing
* the BNF and British Association for Sexual Health and HIV (BASHH) both recommend either oral azithromycin or doxycycline
<hr><center>''NORADRENALINE''</center><hr>
<center>''Adult Dosage''</center><hr>
''Hypotension/shock:''
* ''Continuous I.V. infusion:'' Initial: 8-12 mcg/minute; titrate to desired response. Usual maintenance range: 2-4 mcg/minute
''ACLS dosing range (weight-based dosing):''
* Post cardiac arrest care: Initial: 0.1-0.5 mcg/kg/minute (7-35 mcg/minute in a 70 kg patient)
''Sepsis and septic shock (weight-based dosing):''
* Range from clinical trials: 0.01-3 mcg/kg/minute (0.7-210 mcg/minute in a 70 kg patient)
<hr><center>''Pediatric Dosage''</center><hr>
<center>
|!ADULT: Norad 4 mg (2 amp) in 50 ml NS (Rate at ml/hr)|<|<|<|<|<|<|<|<|<|<|<|<|<|<|<|<|
|!mcg/kg/min|!0.025|!0.05|!0.075|!0.1|!0.125|!0.15|!0.175|!0.2|!0.225|!0.25|!0.275|!0.3|!0.5|!1|!2|!3|
|!50 kg| 0.9 | 1.9 | 2.8 | 3.8 | 4.7 | 5.6 | 6.6 | 7.5 | 8.4 | 9.4 | 10.3 | 11.3 | 18.8 | 37.5 | 75.0 | 112.5 |
|!55 kg| 1.0 | 2.1 | 3.1 | 4.1 | 5.2 | 6.2 | 7.2 | 8.3 | 9.3 | 10.3 | 11.3 | 12.4 | 20.6 | 41.3 | 82.5 | 123.8 |
|!60 kg| 1.1 | 2.3 | 3.4 | 4.5 | 5.6 | 6.8 | 7.9 | 9.0 | 10.1 | 11.3 | 12.4 | 13.5 | 22.5 | 45.0 | 90.0 | 135.0 |
|!65 kg| 1.2 | 2.4 | 3.7 | 4.9 | 6.1 | 7.3 | 8.5 | 9.8 | 11.0 | 12.2 | 13.4 | 14.6 | 24.4 | 48.8 | 97.5 | 146.3 |
|!70 kg| 1.3 | 2.6 | 3.9 | 5.3 | 6.6 | 7.9 | 9.2 | 10.5 | 11.8 | 13.1 | 14.4 | 15.8 | 26.3 | 52.5 | 105.0 | 157.5 |
|!75 kg| 1.4 | 2.8 | 4.2 | 5.6 | 7.0 | 8.4 | 9.8 | 11.3 | 12.7 | 14.1 | 15.5 | 16.9 | 28.1 | 56.3 | 112.5 | 168.8 |
|!80 kg| 1.5 | 3.0 | 4.5 | 6.0 | 7.5 | 9.0 | 10.5 | 12.0 | 13.5 | 15.0 | 16.5 | 18.0 | 30.0 | 60.0 | 120.0 | 180.0 |
|!85 kg| 1.6 | 3.2 | 4.8 | 6.4 | 8.0 | 9.6 | 11.2 | 12.8 | 14.3 | 15.9 | 17.5 | 19.1 | 31.9 | 63.8 | 127.5 | 191.3 |
|!90 kg| 1.7 | 3.4 | 5.1 | 6.8 | 8.4 | 10.1 | 11.8 | 13.5 | 15.2 | 16.9 | 18.6 | 20.3 | 33.8 | 67.5 | 135.0 | 202.5 |
|!95 kg| 1.8 | 3.6 | 5.3 | 7.1 | 8.9 | 10.7 | 12.5 | 14.3 | 16.0 | 17.8 | 19.6 | 21.4 | 35.6 | 71.3 | 142.5 | 213.8 |
|!100 kg| 1.9 | 3.8 | 5.6 | 7.5 | 9.4 | 11.3 | 13.1 | 15.0 | 16.9 | 18.8 | 20.6 | 22.5 | 37.5 | 75.0 | 150.0 | 225.0 |
</center>
''Hypotension/shock:''
* ''Continuous I.V. infusion:'' Initial: 0.05-0.1 mcg/kg/minute; titrate to desired effect; maximum dose: 2 mcg/kg/minute
!!Normocytic anaemia
Causes
* AplasTic anaemia
* acute blood ''Loss''
* ''HemoLytic'' anaemia
* anaemia of ''Chronic'' disease
* ''Chronic'' kidney disease
---
>NORMALLY, PLASTIC is LOST or LYSE after CHRONIC use
---
Osteoarthritis (OA) of the hip is the second most common presentation of OA after the knee. It accounts for significant morbidity and total hip replacement is now one of the most common operations performed in the developed world.
Risk factors
* increasing age
* female gender (twice as common)
* obesity
* developmental dysplasia of the hip
Features
* chronic history of groin ache following exercise and relieved by rest
* red flag features suggesting an alternative cause include rest pain, night pain and morning stiffness > 2 hours
* the Oxford Hip Score is widely used to assess severity
Investigations
* NICE recommends that if the features are typical then a clinical diagnosis can be made
* otherwise plain x-rays are the first-line investigation
Management
* oral analgesia
* intra-articular injections: provide short-term benefit
* total hip replacement remains the definitive treatment
Complications of total hip replacement
* venous thromboembolism
* intraoperative fracture
* nerve injury
Reasons for revision of total hip replacement
* aseptic loosening (most common reason)
* pain
* dislocation
* infection
;Syntocinon
Syntocinon is a synthetic version of oxytocin that is used in the active management of third stage of labour. It stimulates the contraction of the uterus reducing the risk of postpartum haemorrhage. It is also used to induce labour.
;Ergometrine
Ergometrine is an ergot alkaloid which is used as an alternative to oxytocin in the active management of third stage of labour. By constricting vascular smooth muscle of the uterus it can decrease blood loss.
Mechanism of action
* stimulates alpha-adrenergic, dopaminergic and serotonergic receptors
Adverse effects
* coronary artery spasm
;Mifepristone
Mifepristone is used in combination with misoprostol to terminate pregnancies. Misoprostol is a prostaglandin analog that causes uterine contractions.
Mechanism of action
* competitive progesterone receptor antagonist
Adverse effects
* menorrhagia
---
!!Medical Termination of Pregnancy
* ''Mifepristone'' is an antiprogesteronic steroid which sensitises the myometrium to prostoglandin-induced contractions and softens the cervix which allows it to dilate more easily.
* For the termination of pregnancy, a single dose of mifepristone is followed by vaginal administraion of misoprostol / gemeprost.
* The prostaglandin analogue ''Misoprostol'' is the most common medical method used to expel the remaining contents in incomplete abortion
* It is equally effective given orally, sublingually or vaginally.
* ''Mifepristone'' - an antiprogestogenic steroid - is sometimes given to increase the efficiency of the technique.
* In patients having surgical evacuation, ''Oxytocin'' is sometimes used prior to surgery.
>MIS PREgnancy STALL - MIS o PRO STOL
>foundation STONE to PLAN MTP
>STALL to START MTP
---
!!!<center>''CHORIOAMNIONITIS''</center>
<hr>
* Clinda/Vanc + Cefoperazone-sulb
<hr>
!!!<center>''SEPTIC ABORTION''</center>
<hr>
* Ampicillin 500 mg q6h + Metro 500 IV q8h OR Ceftriaxone 2g OD
<hr>
!!!<center>''OBSTETRIC SEPSIS''</center>
<hr>
* Pip-Taz OR Cefoperazone-sulb, later Augmentin 625 TDS OR Ceftriaxone 2g OD + Metro 500 q8h +/- Gent 7 mg/kg/d OD
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Disorder</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="2768">Plummer-Vinson syndrome</span></td><td>Triad of:<br><ul><li>dysphagia (secondary to oesophageal webs)</li><li>glossitis</li><li>iron-deficiency anaemia</li></ul><br>Treatment includes iron supplementation and dilation of the webs</td></tr><tr><td><span class="concept" data-cid="8284">Mallory-Weiss syndrome</span></td><td>Severe vomiting → painful mucosal lacerations at the gastroesophageal junction resulting in haematemesis. Common in alcoholics</td></tr><tr><td><span class="concept" data-cid="8283">Boerhaave syndrome</span></td><td>Severe vomiting → oesophageal rupture</td></tr></tbody></table></div></div>
---
>Mallory is Mucosal
---
>BOERHAAVE is BORE HAVE
---
<div id="notecontent">Ovarian hyperstimulation syndrome (OHSS) is a complication seen in some forms of infertility treatment. It is postulated that the presence of multiple luteinized cysts within the ovaries results in high levels of not only oestrogens and progesterone but also vasoactive substances such as vascular endothelial growth factor (VEGF). This results in increased membrane permeability and loss of fluid from the intravascular compartment<br><br>Whilst it is rarely seen with clomifene therapy is more likely to be seen following gonadotropin or hCG treatment. Up to one third of women who are having IVF may experience a mild form of OHSS<br><br>The RCOG uses the following classification of OHSS<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Mild</b></th><th><b>Moderate</b></th><th><b>Severe</b></th><th><b>Critical</b></th></tr></thead><tbody><tr><td> Abdominal pain<br> Abdominal bloating</td><td> As for mild<br> Nausea and vomiting<br> Ultrasound evidence of ascites</td><td> As for moderate<br> Clinical evidence of ascites<br> Oliguria<br> Haematocrit > 45%<br> Hypoproteinaemia</td><td> As for severe<br> Thromboembolism<br> Acute respiratory distress syndrome<br> Anuria<br> Tense ascites</td></tr></tbody></table></div></div>
<div id="notecontent">Olecranon bursitis describes inflammation of the olecranon bursa, the fluid-filled sac overlying the olecranon process at the proximal end of the ulna. This bursa exists to reduce friction between the posterior aspect of the elbow joint and the overlying soft tissues. Inflammation may result from trauma, infection, or systemic conditions such as rheumatoid arthritis or gout. Olecranon bursitis is also known as 'student's elbow' because the repetitive mild trauma of leaning on a desk using the elbows is a common cause. It is categorised as septic or non-septic depending on whether an infection is present.<br><br>Epidemiology<br><ul><li>More common in men</li><li>Typically presents between age 30 and 60</li></ul> <br>Causes <br><ul><li><span class="concept" data-cid="9985">Repetitive trauma (29%) - writers and students leaning on elbows, plumbers, miners</span></li><li>Direct trauma (17%)</li><li>Infection (33%) - 50% of cases occur in immunosuppressed patients (alcohol abuse, diabetes, taking steroids, renal failure, malignancy). 90% of cases due to <i>Staphylococcus aureus</i>.</li><li>Gout (7%)</li><li>Rheumatoid arthritis (5%)</li><li>Idiopathic (5%) </li></ul><br>Patients with non-septic olecranon bursitis typically present with a subacute onset of:<br><ul><li><span class="concept" data-cid="9985">swelling over the olecranon process (100%)</span></li></ul>For many patients, this will be the only symptom. Some patients with non-septic olecranon bursitis also complain of:<br><ul><li>tenderness over the bursa (45%)</li><li>erythema over the bursa (25%)</li></ul>Patients with septic bursitis are more likely to have pain and fever:<br> -tenderness over the bursa (92-100%)<br> -fever (40%)<br><br>Signs:<br><ul><li>Swelling over the posterior aspect of the elbow, usually fluctuant and well-circumscribed, appearing over hours to days<sup>4</sup></li><li>Tenderness on palpation of the swollen area</li><li>Redness and warmth of the overlying skin</li><li>Fever</li><li>Skin abrasion overlying the bursa</li><li>Effusions in other joints if associated with rheumatoid arthritis</li><li>Tophi if associated with gout</li></ul><br>Movement at the elbow joint should be painless until the swollen bursa is compressed in full flexion.<br><br>Investigations:<br><ul><li>Not always needed if a clinical diagnosis can be made and there is no concern about septic arthritis, e.g. a well patient without pain, fever or erythema of the bursa.</li><li>Aspiration of bursal fluid for microscopy (Gram stain and crystals) and culture is essential if septic bursitis is considered. Purulent fluid suggests infection whereas straw-coloured bursal fluid favours a non-infective cause.</li></ul></div>
In oligohydramnios there is reduced amniotic fluid. Definitions vary but include less than 500ml at 32-36 weeks and an amniotic fluid index (AFI) < 5th percentile.
;Causes
* premature rupture of membranes
* fetal renal problems e.g. renal agenesis
* intrauterine growth restriction
* post-term gestation
* pre-eclampsia
!!!<center>''OLIGURIA & ANURIA''</center>
<hr>
//You are called because a 68-year-old man admitted with pyelonephritis and diabetes mellitus type 2 has had only 100 mL of urine output over the last 8 hours//
* Immediate Questions.
* Review medical history and chart
* Are there any serious or life-threatening conditions? Oliguria may be associated with shock, hypotension, pulmonary edema, uremia, hyperkalemia, uncompensated metabolic acidosis, other electrolyte disorders, or the accumulation of toxic levels of medications and/or metabolites.
* Is the patient in distress? Does he appear ill? Is he hemodynamically stable? Oliguria may be an early manifestation of impending shock.
* BUN, Cr?, baseline Cr? Has the Cr changed during hospitalization?
* What is the cause of the oliguria?
* What is the urine output? Oliguria is defined as a 24-hour urine output of 100–400 mL.
* As a general rule, the minimal acceptable urine output is 0.5–1.0 mL/kg/hr.
* Anuria, less than 100 mL/day of urine
* CHF, cirrhosis, nephrotic syndrome, pancreatitis?
* DM with pre existing renal insufficiency?
* Bladder outlet obstruction from BPH?
* Has the patient recently had a Foley catheter?
* Any exposure to nephrotoxic agents? Aminoglycosides, amphotericin B, radiocontrast agents, chemo drugs, ACEIs, NSAIDs
* Hematuria? RPGN?
* Hematuria is a common sign of nephrolithiasis and bladder or renal cell carcinoma.
* H/O prolonged hypotension? Ischemic ATN.
* Is there any history of abdominal, suprapubic, or flank pain? Suggests nephrolithiasis, urinary tract obstruction, infection, or a renal vascular event.
* During the initial assessment, do the medications, IV fluids, and dietary orders need to be adjusted?
* Potassium may need to be removed from IVF
''Prerenal causes''
# Shock/hypovolemia: Hemorrhage, Inadequate fluid administration, Sepsis
# Apparent intravascular hypovolemia: Third space losses. Pancreatitis, major burns, and after major operations, CHF, Cirrhosis. Hepatorenal syndrome, Nephrotic syndrome
''Renal causes''
* ATN, medications, contrast, Transfusion reaction, AIN, Infections, Acute glomerular disease
''Postrenal causes''
* Urethral obstruction. Prostatic hypertrophy, catheter obstruction, Bilateral ureteral obstruction, Intratubular obstruction.
* Urinalysis, KFT,
* BUN:cr ratio > 20:1, a prerenal cause is likely,
* If the ratio is < 15:1 and the BUN and creatinine are elevated, a renal cause is likely.
* Urinary sodium < 20 mmol/L: prerenal cause; urinary sodium > 20 mmol/L: renal causes.
* The fractional excretion of sodium (FENa) is calculated as [urinary sodium × serum creatinine/urine creatinine × serum sodium] × 100.
* FENa < 1: prerenal; FENa > 1: renal causes.
* Get USG KUB, Retrograde pyelogram (RPG). If obstruction is suspected, CXR to assess for pulmonary edema and heart size.
* ECG if hyperkalemia.
* Echocardiogram. Useful to assess for suspected pericardial effusion and left ventricular function.
''Other diagnostic and therapeutic maneuvers''
* [[Urinary catheter|Foley Catheter Insertion]]. Initially, if a urinary catheter is in place, make sure the catheter is working by irrigating with 50 mL sterile normal saline (NS), using a catheter-tip syringe. The fluid should pass easily, and the entire amount should be aspirated. If no urinary catheter is in place and obstruction is suspected, an in-and-out bladder catheterization should be performed. If a large postvoid residual is obtained, the catheter should be left in place. If a patient has very little urinary output, an indwelling catheter should be avoided because of the risk of infection.
* ''Volume challenge''. NS bolus over 30 min
* Small bolus if fragile cardiorespiratory status or in the elderly
* Try furosemide (40–80 mg), or bumetanide (1–2 mg), or torsemide (20–50 mg)
* If urine output does not increase within 1 hr, the doses can be progressively doubled until maximal doses are achieved (furosemide 360–400 mg, bumetanide 8–10 mg, or torsemide 200 mg).
* If a diuresis is established, loop diuretics may be administered as needed. Volume status should be monitored carefully to prevent volume depletion.
* An alternative strategy is to administer a bolus of loop diuretic followed by a continuous infusion that may be titrated according to need. (For example, a bolus of 80–160 mg of furosemide can be followed by 20 mg/hr titrating up by 10 mg/hr every hour as needed to a maximum of 80 mg/hr
* ''Thiazide diuretics''. May be used synergistically with loop diuretics. Metolazone 5–10 mg PO may be tried.
* ''Mannitol''. May be used to help establish a diuresis in cases of rhabdomyolysis, hemolytic transfusion reactions, acute uric acid nephropathy, contrast-induced oliguria, and other toxic nephropathies. A dose of 12.5–25 g (50–100 mL of a 25% solution) IV may induce an osmotic diuresis.
* Mannitol may cause hyponatremia or hypernatremia, hypokalemia, or volume overload. Volume status must be carefully monitored and appropriate replacement fluids administered.
* ''Prerenal'': IVF; Monitor volume replacement.
* Follow hourly urine output.
* Min output is < 0.5 mL/kg/hr.
* Remove potassium and magnesium from IV solutions. If hypokalemia or hypomagnesemia is present, replace judiciously, preferably by the oral route.
* ''Postrenal'': Bladder outlet obstruction. Manage acutely with a Foley catheter.
* Ureteral obstruction requires urologic consultation.
<hr>
<center>''Management of ATN''</center>
<hr>
* Supportive care
* In addition to supportive care, dialysis may be indicated in 85% of patients with oliguric (< 400 mL/24 hr) and in 30–40% of patients with nonoliguric (> 400 mL/24 hr) ATN.
* Consult with a nephrologist early when serum creatinine is ≥ 2.0 mg/dL.
<hr>
<center>''Management of oliguria/ARF''</center>
<hr>
* General measures include the following:
* ''Fluid management'' needs to be individualized. Excessive fluid resuscitation should be avoided.
* In general, IV fluids should not contain potassium.
* Accurate records of fluid intake and output are essential.
* Serum electrolytes need to be followed carefully.
* If the patient has a metabolic acidosis with pH < 7.10, sodium bicarbonate should be added.
* ''Nutrition'' Patients with ARF need a diet restricted in potassium, sodium, protein, and total fluids.
* ''Medications'' Review the patient’s medications and stop all nephrotoxic drugs. Doses of renally excreted drugs should be adjusted.
* ''Hemodialysis or peritoneal dialysis'' Should be considered in the following circumstances: severe hypervolemia unresponsive to diuretics, intractable metabolic acidosis, severe hyperkalemia, pericarditis thought secondary to uremia, and severe uremic symptoms or encephalopathy.
!!Fungal nail infections
Onychomycosis is fungal infection of the nails. This may be caused by
* dermatophytes - mainly Trichophyton rubrum, accounts for 90% of cases
* yeasts - such as Candida
* non-dermatophyte moulds
Risk factors include for fungal nail infections include diabetes mellitus and increasing age.
Features
* 'unsightly' nails are a common reason for presentation
* thickened, rough, opaque nails are the most common finding
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img009.jpg">
</center>
Differential diagnosis
* psoriasis
* repeated trauma
* lichen planus
* yellow nail syndrome
Investigation
* nail clippings
* scrapings of the affected nail
* the false-negative rate for cultures are around 30%, so repeat samples may need to be sent if the clinical suspicion is high
Management
* `do not need to be treated if it is asymptomatic and the patient is not bothered by the appearance`
* diagnosis `should be confirmed by microbiology before starting treatment`
* ''Dermatophyte infection''
** oral terbinafine is currently recommended first-line with oral itraconazole as an alternative
** 6 weeks - 3 months therapy is needed for fingernail infections whilst toenails should be treated for 3 - 6 months
** treatment is successful in around 50-80% of people
* ''Candida infection''
** mild disease should be treated with topical antifungals (e.g. Amorolfine) whilst more severe infections should be treated with oral itraconazole for a period of 12 weeks
* if topical topical treatment is given treatment should be continued for 6 months for fingernails and 9-12 months for toenails
---
>SHUBRAM ga leka pothe RUBRUM vastundi
*Trichophyton RUBRUM
---
!!Primary open-angle glaucoma
<div id="body_content">
Glaucomas are optic neuropathies associated with raised intraocular pressure (IOP). They can be classified based on whether the peripheral iris is covering the trabecular meshwork, which is important in the drainage of aqueous humour from the anterior chamber of the eye. In open-angle glaucoma, the iris is clear of the meshwork. The trabecular network functionally offers an increased resistance to aqueous outflow, causing increased IOP. It is now recognised that a minority of patients with raised IOP do not have glaucoma and vice versa.<br><br>Epidemiology<br><ul><li>affects 0.5% of people over the age of 40</li><li>the prevalence increases with age up to 10% over the age of 80 years</li><li>affects males and females equally</li></ul><br>Primary open-angle glaucoma (POAG, also referred to as chronic simple glaucoma) is present in around 2% of people older than 40 years. Other than age, risk factors include:<br><ul><li>genetics: first degree relatives of an open-angle glaucoma patient have a 16% chance of developing the disease</li><li>black patients</li><li>myopia</li><li>hypertension</li><li>diabetes mellitus</li><li><span class="concept" data-cid="6025">corticosteroids</span></li></ul><br>POAG may present insidiously and for this reason is often detected during routine optometry appointments. Features may include<br><ul><li>peripheral visual field loss - nasal scotomas progressing to 'tunnel vision'</li><li>decreased visual acuity</li><li>optic disc cupping</li></ul><br>Fundoscopy signs of primary open-angle glaucoma (POAG):<br><ul><li>1. Optic disc cupping - cup-to-disc ratio >0.7 (normal = 0.4-0.7), occurs as loss of disc substance makes optic cup widen and deepen </li><li>2. Optic disc pallor - indicating optic atrophy</li><li>3. Bayonetting of vessels - vessels have breaks as they disappear into the deep cup and re-appear at the base </li><li>4. Additional features - Cup notching (usually inferior where vessels enter disc), Disc haemorrhages</li></ul> <br>Diagnosis:<br><ul><li>Case finding and provisional diagnosis is done by an optometrist</li><li>Referral to the ophthalmologist is done via the GP</li><li>Final diagnosis is done by investigations as below</li></ul><br>Investigations:<br><ul><li>automated perimetry to assess visual field</li><li>slit lamp examination with pupil dilatation to assess optic neve and fundus for a baseline</li><li>applanation tonometry to measure IOP</li><li>central corneal thickness measurement</li><li>gonioscopy to assess peripheral anterior chamber configuration and depth</li><li>Assess risk of future visual impairment, <i>using risk factors such as IOP, central corneal thickness (CCT), family history, life expectancy</i></li></ul></div>
---
>OPEN areas are AFFECTED
*OPEN angle glaucoma - PERIPHERAL areas affected leading to TUBULAR vision
---
;Treatment
* ''Timolol'' is a beta blocker and should not be prescribed in asthma and heart failure
* ''Lantoprost'' is a prostaglandin analogue which increases uveoscleral outflow. Side effects include pericoular skin pigmentation, red eye and changes in iris colour.
* ''Brimonidine'' is an alpha adrenergic agonist which decreases production of aqueous fluid and increases uveoscleral outflow. Side effects include dry mouth and lethargy.
* ''Dorzolamide'' is a Carbonic anhydrase inhibitor which decreases production of aqueous fluid. Side effects include low potassium, paresthesia and dyspepsia. This medication should be avoided in pregnancy.
* ''Pilocarpine'' drops are mitotic which decrease resistance to aqueous flow by causing miosis in the eye.
;Causes
* multiple sclerosis
* diabetes
* syphilis
;Features
* `unilateral decrease in visual acuity over hours or days`
* poor discrimination of colours, 'red desaturation'
* pain worse on eye movement
* relative afferent pupillary defect
* central scotoma
;Management
* high-dose steroids
* recovery usually takes 4-6 weeks
;Prognosis
* MRI: if > 3 white-matter lesions, 5-year risk of developing multiple sclerosis is c. 50%
| !OROPHARYNGEAL CANDIDIASIS DRUGS |<|
|Itraconazole|Cap Canditral 100 mg BD, 2 wks, with food|
|Ketoconazole|Fungicide lotion: Apply locally as directed with a thin coat to inner surface of denture and affected areas after meals|
2 week wait referrals to oral surgery should be done in all of the following cases:
* Unexplained oral ulceration or mass persisting for greater than 3 weeks
* Unexplained red, or red and white patches that are painful, swollen or bleeding
* Unexplained one-sided pain in the head and neck area for greater than 4 weeks, which is associated with ear ache, but does not result in any abnormal findings on otoscopy
* Unexplained recent neck lump, or a previously undiagnosed lump that has changed over a period of 3 to 6 weeks
* Unexplained persistent sore or painful throat
* Signs and symptoms in the oral cavity persisting for more than 6 weeks, that cannot be definitively diagnosed as a benign lesion
The level of suspicion should be higher in patients who are over 40, smokers, heavy drinkers and those who chew tobacco or betel nut (areca nut).
One of the effects of organophosphate poisoning is inhibition of acetylcholinesterase leading to upregulation of nicotinic and muscarinic cholinergic neurotransmission. In warfare, sarin gas is a highly toxic synthetic organophosphorus compound that has similar effects.
Features can be predicted by the accumulation of acetylcholine (mnemonic = ''SLUD'')
* Salivation
* Lacrimation
* Urination
* Defecation/diarrhoea
* cardiovascular: hypotension, bradycardia
* also: small pupils, muscle fasciculation
Management
* atropine
* the role of pralidoxime is still unclear - meta-analyses to date have failed to show any clear benefit
!!!<center>''OROTRACHEAL INTUBATION''</center>
<hr>
!!!<center>''Airway Devices''</center>
<iframe width="774" height="484" src="https://www.youtube.com/embed/ThISkClbv7o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
!!!<center>''Technique''</center>
<iframe width="806" height="453" src="https://www.youtube.com/embed/ZJtFb7lGPic" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
!!Osteogenesis imperfecta
(more commonly known as brittle bone disease) is a group of disorders of collagen metabolism resulting in bone fragility and fractures. The most common, and milder, form of osteogenesis imperfecta is type 1
Overview
* autosomal dominant
* abnormality in type 1 collagen due to decreased synthesis of pro-alpha 1 or pro-alpha 2 collagen polypeptides
Features
* presents in childhood
* fractures following minor trauma
* blue sclera
* deafness secondary to otosclerosis
* dental imperfections are common
Investigations
* adjusted calcium, phosphate, parathyroid hormone and ALP results are usually normal in osteogenesis imperfecta
<div id="body_content">
Basics<br><ul><li>normal bony tissue but decreased mineral content</li><li>rickets if when growing</li><li>osteomalacia if after epiphysis fusion</li></ul><br>Types<br><ul><li>vitamin D deficiency e.g. malabsorption, lack of sunlight, diet</li><li>renal failure</li><li>drug induced e.g. anticonvulsants</li><li>vitamin D resistant; inherited</li><li>liver disease, e.g. cirrhosis</li></ul><br>Features<br><ul><li>rickets: knock-knee, bow leg, features of hypocalcaemia</li><li>osteomalacia: bone pain, fractures, muscle tenderness, proximal myopathy</li></ul><br>Investigation<br><ul><li>low 25(OH) vitamin D (in 100% of patients, by definition)</li><li>raised alkaline phosphatase (in 95-100% of patients)</li><li>low calcium, phosphate (in around 30%)</li><li>x-ray: children - cupped, ragged metaphyseal surfaces; adults - translucent bands (Looser's zones or pseudofractures) </li></ul><br>Treatment<br><ul><li>calcium with vitamin D tablets</li></ul></div>
Basics
* normal bony tissue but decreased mineral content
* rickets if when growing
* osteomalacia if after epiphysis fusion
Types
* vitamin D deficiency e.g. malabsorption, lack of sunlight, diet
* renal failure
* drug induced e.g. anticonvulsants
* vitamin D resistant; inherited
* liver disease, e.g. cirrhosis
Features
* rickets: knock-knee, bow leg, features of hypocalcaemia
* osteomalacia: bone pain, fractures, muscle tenderness, proximal myopathy
Investigation
* low 25(OH) vitamin D (in 100% of patients, by definition)
* raised alkaline phosphatase (in 95-100% of patients)
* low calcium, phosphate (in around 30%)
* x-ray: children - cupped, ragged metaphyseal surfaces; adults - translucent bands (Looser's zones or pseudofractures)
Treatment
* calcium with vitamin D tablets
<div id="notecontent">Advancing age and female sex are significant risk factors for osteoporosis. Prevalence of osteoporosis increases from 2% at 50 years to more than 25% at 80 years in women.<br><br>There are many other risk factors and secondary causes of osteoporosis. We'll start by looking at the most 'important' ones - these are risk factors that are used by major risk assessment tools such as FRAX:<br><ul><li>history of <span class="concept" data-cid="2775">glucocorticoid</span> use</li><li><span class="concept" data-cid="3280">rheumatoid arthritis</span></li><li>alcohol excess</li><li>history of parental hip fracture</li><li>low body mass index</li><li>current smoking</li></ul><br>Other risk factors<br><ul><li>sedentary lifestyle</li><li>premature menopause</li><li>Caucasians and Asians</li><li>endocrine disorders: hyperthyroidism, hypogonadism (e.g. Turner's, <span class="concept" data-cid="294">testosterone deficiency</span>), growth hormone deficiency, hyperparathyroidism, diabetes mellitus</li><li>multiple myeloma, lymphoma</li><li>gastrointestinal disorders: <span class="concept" data-cid="2041">inflammatory bowel disease</span>, malabsorption (e.g. Coeliac's), gastrectomy, liver disease</li><li>chronic kidney disease</li><li>osteogenesis imperfecta, homocystinuria</li></ul><br>Medications that may worsen osteoporosis (other than glucocorticoids):<br><ul><li>SSRIs</li><li>antiepileptics</li><li><span class="concept" data-cid="295">proton pump inhibitors</span></li><li>glitazones</li><li>long term heparin therapy</li><li>aromatase inhibitors e.g. anastrozole</li></ul><br><b>Investigations for secondary causes</b><br><br>If a patient is diagnosed with osteoporosis or has a fragility fracture further investigations may be warranted. NOGG recommend testing for the following reasons:<br><ul><li>exclude diseases that mimic osteoporosis (e.g. osteomalacia, myeloma); </li><li>identify the cause of osteoporosis and contributory factors;</li><li>assess the risk of subsequent fractures;</li><li>select the most appropriate form of treatment</li></ul><br>The following investigations are recommended by NOGG:<br><ul><li>History and physical examination</li><li>Blood cell count, sedimentation rate or C-reactive protein, serum calcium, </li></ul>albumin, creatinine, phosphate, alkaline phosphatase and liver transaminases<br><ul><li>Thyroid function tests</li><li>Bone densitometry ( DXA)</li></ul><br>Other procedures, if indicated<br><ul><li>Lateral radiographs of lumbar and thoracic spine/DXA-based vertebral imaging</li><li>Protein immunoelectrophoresis and urinary Bence-Jones proteins</li><li>25OHD</li><li>PTH</li><li>Serum testosterone, SHBG, FSH, LH (in men), </li><li>Serum prolactin </li><li>24 hour urinary cortisol/dexamethasone suppression test </li><li>Endomysial and/or tissue transglutaminase antibodies (coeliac disease)</li><li>Isotope bone scan</li><li>Markers of bone turnover, when available</li><li>Urinary calcium excretion</li></ul><br>So from the first list we should order the following bloods as a minimum for all patients:<br><ul><li>full blood count</li><li>urea and electrolytes</li><li>liver function tests</li><li>bone profile</li><li>CRP</li><li>thyroid function tests</li></ul></div>
The management of patients following a fragility fracture depends on age.
!!!Patients >= 75 years of age
Patients who've had a fragility fracture and are >= 75 years of age are presumed to have underlying osteoporosis and should be started on first-line therapy (an oral bisphosphonate), without the need for a DEXA scan.
It should be noted that the 2014 NOGG guidelines have a different threshold, suggesting treatment is started in all women over the age of 50 years who've had a fragility fracture - 'although BMD measurement may sometimes be appropriate, particularly in younger postmenopausal women.'
!!!Patients < 75 years of age
If a patient is under the age of 75 years a DEXA scan should be arranged. These results can then be entered into a FRAX assessment (along with the fact that they've had a fracture) to determine the patients ongoing fracture risk.
For example, a 79-year-old woman falls over on to an outstretched hand and sustains a Colles' fracture (fracture of the distal radius). Given her age she is presumed to have osteoporosis and therefore started on oral alendronate 70mg once weekly. No DEXA scan is arranged.
<div id="notecontent">We worry about osteoporosis because of the increased risk of fragility fractures. So how do we assess which patients are at risk and need further investigation?<br><br>NICE produced guidelines in 2012: Osteoporosis: assessing the risk of fragility fracture. The following is based on those guidelines.<br><br>They advise that all women aged >= 65 years and all men aged >= 75 years should be assessed. Younger patients should be assessed in the presence of risk factors, such as:<br><ul><li>previous fragility fracture</li><li>current use or frequent recent use of oral or systemic glucocorticoid</li><li>history of falls</li><li>family history of hip fracture</li><li>other causes of secondary osteoporosis</li><li>low body mass index (BMI) (less than 18.5 kg/m²)</li><li>smoking</li><li>alcohol intake of more than 14 units per week for women and more than 14 units per week for men.</li></ul><br><br><b>Methods of risk assessment</b><br><br>NICE recommend using a clinical prediction tool such as FRAX or QFracture to assess a patients 10 year risk of developing a fracture. This is analogous to the cardiovascular risk tools such as QRISK.<br><br>FRAX<br><ul><li>estimates the 10-year risk of fragility fracture</li><li>valid for patients aged 40-90 years</li><li>based on international data so use not limited to UK patients</li><li>assesses the following factors: age, sex, weight, height, previous fracture, parental fracture, current smoking, glucocorticoids, rheumatoid arthritis, secondary osteoporosis, alcohol intake</li><li>bone mineral density (BMD) is optional, but clearly improves the accuracy of the results. NICE recommend arranging a DEXA scan if FRAX (without BMD) shows an intermediate result</li></ul><br>QFracture<br><ul><li>estimates the 10-year risk of fragility fracture</li><li>developed in 2009 based on UK primary care dataset</li><li>can be used for patients aged 30-99 years (this is stated on the QFracture website, but other sources give a figure of 30-85 years)</li><li>includes a larger group of risk factors e.g. cardiovascular disease, history of falls, chronic liver disease, rheumatoid arthritis, type 2 diabetes and tricyclic antidepressants</li></ul><br>There are some situations where NICE recommend arranging BMD assessment (i.e. a DEXA scan) rather than using one of the clinical prediction tools:<br><ul><li>before starting treatments that may have a rapid adverse effect on bone density (for example, sex hormone deprivation for treatment for breast or prostate cancer).</li><li>in people aged under 40 years who have a major risk factor, such as history of multiple fragility fracture, major osteoporotic fracture, or current or recent use of high-dose oral or high-dose systemic glucocorticoids (more than 7.5 mg prednisolone or equivalent per day for 3 months or longer).</li></ul><br><br><b>Interpreting the results of FRAX</b><br><br>Once we've decided that we need to do a risk assessment using FRAX and have entered all the data we are left with results to interpret.<br><br>If the FRAX assessment was done <b>without a bone mineral density (BMD)</b> measurement the results (10-year risk of a fragility fracture) will be given and categorised automatically into one of the following:<br><ul><li>low risk: reassure and give lifestyle advice</li><li>intermediate risk: offer BMD test</li><li>high risk: offer bone protection treatment</li></ul><br>Therefore, with intermediate risk results FRAX will recommend that you arrange a BMD test to enable you to more accurately determine whether the patient needs treatment<br><br>If the FRAX assessment was done <b>witha bone mineral density (BMD)</b> measurement the results (10-year risk of a fragility fracture) will be given and categorised automatically into one of the following:<br><ul><li>reassure</li><li>consider treatment</li><li>strongly recommend treatment</li></ul><br>If you use QFracture instead patients are not automatically categorised into low, intermediate or high risk. Instead the 'raw data' relating to the 10-year risk of any sustaining an osteoporotic fracture. This data then needs to be interpreted alongside either local or national guidelines, taking into account certain factors such as the patient's age.<br><br><b>When should we reassess a patient's risk?</b><br><br>NICE recommend that we recalculate a patient's risk (i.e. repeat the FRAX/QFracture):<br><div class="bs-callout bs-callout-default"><i><i><br><ul><li>if the original calculated risk was in the region of the intervention threshold for a proposed treatment and only after a minimum of 2 years, or</li><li>when there has been a change in the person's risk factors</li></ul></i></i></div></div>
`Bone protection for patients who are going to take long-term steroids should start immediately.. Oral Alendronate + Calcium + Vit D`
<div id="notecontent">We know that one of the most <span class="concept" data-cid="4392">important risk factors for osteoporosis is the use of corticosteroids</span>. As these drugs are so widely used in clinical practice it is important we manage this risk appropriately. <br><br>The most widely followed guidelines are based around the 2002 Royal College of Physicians (RCP) 'Glucocorticoid-induced osteoporosis: A concise guide to prevention and treatment'.<br><br>The risk of osteoporosis is thought to rise significantly once a patient is taking the equivalent of prednisolone 7.5mg a day for 3 or more months. It is important to note that we should manage patients in an anticipatory, i.e. if it likely that the patient will have to take steroids for at least 3 months then we should start bone protection straight away, rather than waiting until 3 months has elapsed. A good example is a patient with newly diagnosed polymyalgia rheumatica. As it is very likely they will be on a significant dose of prednisolone for greater than 3 months bone protection should be commenced immediately.<br><br><b>Management of patients at risk of corticosteroid-induced osteoporosis</b><br><br>The RCP guidelines essentially divide patients into two groups.<br><br>1. Patients over the age of 65 years or those who've previously had a fragility fracture should be offered bone protection. <br><br>2. Patients under the age of 65 years should be offered a bone density scan, with further management dependent:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>T score</th><th>Management</th></tr></thead><tbody><tr><td>Greater than 0</td><td>Reassure</td></tr><tr><td>Between 0 and -1.5</td><td>Repeat bone density scan in 1-3 years</td></tr><tr><td>Less than -1.5</td><td>Offer bone protection</td></tr></tbody></table></div><br>The first-line treatment is alendronate. Patients should also be calcium and vitamin D replete.</div>
<div id="notecontent">NICE guidelines were updated in 2008 on the secondary prevention of osteoporotic fractures in postmenopausal women.<br><br>Key points include<br><ul><li>treatment is indicated following osteoporotic fragility fractures in postmenopausal women who are confirmed to have osteoporosis (a T-score of - 2.5 SD or below). In women aged 75 years or older, a DEXA scan may not be required 'if the responsible clinician considers it to be clinically inappropriate or unfeasible'</li><li>vitamin D and calcium supplementation should be offered to all women unless the clinician is confident they have adequate calcium intake and are vitamin D replete</li><li>alendronate is first-line</li><li>around 25% of patients cannot tolerate alendronate, usually due to upper gastrointestinal problems. These patients should be offered risedronate or etidronate (see treatment criteria below)</li><li>strontium ranelate and raloxifene are recommended if patients cannot tolerate bisphosphonates (see treatment criteria below)</li></ul><br><b>Treatment criteria for patients not taking alendronate</b><br><br>Unfortunately, a number of complicated treatment cut-off tables have been produced in the latest guidelines for patients who do not tolerate alendronate<br><br>These take into account a patients age, theire T-score and the number of risk factors they have from the following list:<br><ul><li>parental history of hip fracture</li><li>alcohol intake of 4 or more units per day</li><li>rheumatoid arthritis</li></ul><br>It is very unlikely that examiners would expect you to have memorised these risk tables so we've not included them in the revision notes but they may be found by following the NICE link. The most important thing to remember is:<br><ul><li>the T-score criteria for risedronate or etidronate are less than the others implying that these are the second line drugs</li><li>if alendronate, risedronate or etidronate cannot be taken then strontium ranelate or raloxifene may be given based on quite strict T-scores (e.g. a 60-year-old woman would need a T-score < -3.5)</li><li>the strictest criteria are for denosumab</li></ul><br><b>Supplementary notes on treatment</b><br><br>Bisphosphonates<br><ul><li>alendronate, risedronate and etidronate are all licensed for the prevention and treatment of post-menopausal and glucocorticoid-induced osteoporosis </li><li>all three have been shown to reduce the risk of both vertebral and non-vertebral fractures although alendronate, risedronate may be superior to etidronate in preventing hip fractures</li><li>ibandronate is a once-monthly oral bisphosphonate</li></ul><br>Vitamin D and calcium<br><ul><li>poor evidence base to suggest reduced fracture rates in the general population at risk of osteoporotic fractures - may reduce rates in frail, housebound patients</li></ul><br>Raloxifene - selective oestrogen receptor modulator (SERM)<br><ul><li>has been shown to prevent bone loss and to reduce the risk of vertebral fractures, but has not yet been shown to reduce the risk of non-vertebral fractures</li><li>has been shown to increase bone density in the spine and proximal femur</li><li>may worsen menopausal symptoms</li><li>increased risk of thromboembolic events</li><li>may decrease risk of breast cancer</li></ul><br>Strontium ranelate <br><ul><li>'dual action bone agent' - increases deposition of new bone by osteoblasts (promotes differentiation of pre-osteoblast to osteoblast) and reduces the resorption of bone by inhibiting osteoclasts</li><li>concerns regarding the safety profile of strontium have been raised recently. It should only be prescribed by a specialist in secondary care</li><li>due to these concerns the European Medicines Agency in 2014 said it should only be used by people for whom there are no other treatments for osteoporosis</li><li>increased risk of cardiovascular events: any history of cardiovascular disease or significant risk of cardiovascular disease is a contraindication</li><li>increased risk of thromboembolic events: a Drug Safety Update in 2012 recommended it is not used in patients with a history of venous thromboembolism</li><li>may cause serious skin reactions such as Stevens Johnson syndrome</li></ul><br>Denosumab<br><ul><li>human monoclonal antibody that inhibits RANK ligand, which in turn inhibits the maturation of osteoclasts</li><li>given as a single subcutaneous injection every 6 months</li><li>initial trial data suggests that it is effective and well tolerated</li></ul><br>Teriparatide<br><ul><li>recombinant form of parathyroid hormone</li><li>very effective at increasing bone mineral density but role in the management of osteoporosis yet to be clearly defined</li></ul><br>Hormone replacement therapy<br><ul><li>has been shown to reduce the incidence of vertebral fracture and non-vertebral fractures</li><li>due to concerns about increased rates of cardiovascular disease and breast cancer it is no longer recommended for primary or secondary prevention of osteoporosis unless the woman is suffering from vasomotor symptoms</li></ul><br>Hip protectors<br><ul><li>evidence to suggest significantly reduce hip fractures in nursing home patients</li><li>compliance is a problem</li></ul><br>Falls risk assessment<br><ul><li>no evidence to suggest reduced fracture rates</li><li>however, do reduce rate of falls and should be considered in management of high risk patients</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb167b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb167.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb167b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">MRI showing osteoporotic fractures of the 8th and 10th thoracic vertebrae.</div></div>
Antibiotics should be prescribed immediately if:
* Symptoms lasting more than 4 days or not improving
* Systemically unwell but not requiring admission
* Immunocompromise or high risk of complications secondary to significant heart, lung, kidney, liver, or neuromuscular disease
* Younger than 2 years with bilateral otitis media
* Otitis media with perforation and/or discharge in the canal
If an antibiotic is given, a 5-day course of amoxicillin is first-line. In patients with penicillin allergy, erythromycin or clarithromycin should be given.
<div id="notecontent">Otitis externa is a common reason for primary care attendance in the UK.<br><br>Causes of otitis externa include:<br><ul><li>infection: bacterial (<i><i>Staphylococcus</i> aureus</i>, <i><i>Pseudomonas</i> aeruginosa</i>) or fungal</li><li>seborrhoeic dermatitis</li><li>contact dermatitis (allergic and irritant)</li></ul><br>Features<br><ul><li><span class="concept" data-cid="2284">ear pain, itch, discharge</span></li><li>otoscopy: red, swollen, or eczematous canal</li></ul><br>The recommended initial management of otitis externa is:<br><ul><li><span id="concept_popover_id_2418" class="concept concept-0 trigger-link" data-cid="2418" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2418'>You've never been tested on this concept</div><br><div id='div_concept_rating2418' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(101,255,0)'>Importance: <b>80</b></span> </div>" data-original-title="Topical antibiotics with or without steroid are first line treatment in otitis externa">topical antibiotic or a combined topical antibiotic with a steroid</span></li><li>if the tympanic membrane is perforated aminoglycosides are traditionally not used*</li><li>if there is canal debris then consider removal</li><li>if the canal is extensively swollen then an ear wick is sometimes inserted</li></ul><br>Second-line options include<br><ul><li>consider contact dermatitis secondary to neomycin</li><li>oral antibiotics (flucloxacillin) if the infection is spreading</li><li>taking a swab inside the ear canal</li><li><span id="concept_popover_id_4252" class="concept concept-0 trigger-link" data-cid="4252" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4252'>You've never been tested on this concept</div><br><div id='div_concept_rating4252' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(209,255,0)'>Importance: <b>59</b></span> </div>" data-original-title="Recurrent otitis externa following numerous antibiotic treatment should raise suspicion of Candida infection">empirical use of an antifungal agent</span></li></ul> <br><span class="concept" data-cid="9969">If a patient fails to respond to topical antibiotics then the patient should be referred to ENT.</span><br><br>Malignant otitis externa is more common in elderly diabetics. In this condition, there is extension of infection into the bony ear canal and the soft tissues deep to the bony canal. Intravenous antibiotics may be required.<br><br>*many ENT doctors disagree with this and feel that concerns about ototoxicity are unfounded</div>
<center>
<img width=400 src="https://www.dropbox.com/s/zvyxvjh8ifm63ac/otitis.jpg?raw=1">
</center>
The bulging nature of the tympanic membrane strongly suggests a diagnosis of otitis media. The colour of the tympanic membrane alone has a low predictive value for otitis media as it may be reddened by coughing, nose blowing, and fever.
---
Antibiotics should be prescribed immediately if:
* Symptoms lasting more than 4 days or not improving
* Systemically unwell but not requiring admission
* Immunocompromise or high risk of complications secondary to significant heart, lung, kidney, liver, or neuromuscular disease
* Younger than 2 years with bilateral otitis media
* Otitis media with perforation and/or discharge in the canal
If an antibiotic is given, a 5-day course of amoxicillin is first-line. In patients with penicillin allergy, erythromycin or clarithromycin should be given.
Otosclerosis describes the replacement of normal bone by vascular spongy bone. It causes a progressive conductive deafness due to fixation of the stapes at the oval window. Otosclerosis is autosomal dominant and typically affects young adults
Onset is usually at 20-40 years - features include:
* conductive deafness
* tinnitus
* normal tympanic membrane*
* positive family history
Management
* hearing aid
* stapedectomy
*10% of patients may have a 'flamingo tinge', caused by hyperaemia
---
>DDs
Otosclerosis is an autosomal dominant condition which is caused by an abnormal growth of bone near the middle ear. The condition affects individuals between 20 and 40 years and can result in hearing loss and tinnitus. There is some evidence to suggest that it can worsen during pregnancy. Treatment includes hearing aids and stapedectomy.
Presbycusis is a sensorineural hearing disorder which is usually age related.
Cholesteatoma is a growth of keratinising squamous epithelium in the ear which results in unilateral hearing loss, headaches and can also be associated with vertigo and facial nerve palsy.
Acoustic neuroma is a benign growth which affects the vestibulocochlear nerve and can result in unilateral tinnitus and deafness.
Meniere's disease causes vertigo, tinnitus, deafness and a feeling of fullness inside the ear.
---
<div id="notecontent">The initial imaging modality for suspected ovarian cysts/tumours is ultrasound. The report will usually report that the cyst is either:<br><ul><li>simple: unilocular, more likely to be physiological or benign</li><li>complex: multilocular, more likely to be malignant</li></ul><br>Management depends on the age of the patient and whether the patient is symptomatic. It should be remembered that the diagnosis of ovarian cancer is often delayed due to a vague presentation.<br><br>Premenopausal women<br><ul><li>a conservative approach may be taken for younger women (especially if < 35 years) as malignancy is less common. If the cyst is small (e.g. < 5 cm) and reported as 'simple' then it is highly likely to be benign. A repeat ultrasound should be arranged for 8-12 weeks and referral considered if it persists.</li></ul><br>Postmenopausal women<br><ul><li>by definition physiological cysts are unlikely</li><li>any postmenopausal woman with an ovarian cyst regardless of nature or size should be referred to gynaecology for assessment</li></ul></div>
<div id="notecontent">Ovarian cancer is the fifth most common malignancy in females. The peak age of incidence is 60 years and it generally carries a poor prognosis due to late diagnosis.<br><br>Pathophysiology<br><ul><li><span class="concept" data-cid="8492">around 90% of ovarian cancers are epithelial in origin, with 70-80% of cases being due to serous carcinomas</span></li><li>interestingly, it is now increasingly recognised that the distal end of the fallopian tube is often the site of origin of many 'ovarian' cancers</li></ul><br>Risk factors<br><ul><li>family history: mutations of the <span id="concept_popover_id_7782" class="concept concept-3-u trigger-link" data-cid="7782" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7782'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating7782' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(168,255,0)'>Importance: <b>67</b></span> </div>" data-original-title="Ovarian cancer - risk factors include: mutations of the BRCA1 gene">BRCA1</span> or the <span id="concept_popover_id_7783" class="concept concept-3-u trigger-link" data-cid="7783" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7783'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating7783' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(137,255,0)'>Importance: <b>73</b></span> </div>" data-original-title="Ovarian cancer - risk factors include: mutations of the BRCA2 gene">BRCA2 gene</span></li><li><span id="concept_popover_id_250" class="concept concept-0 trigger-link" data-cid="250" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative250'>You've never been tested on this concept</div><br><div id='div_concept_rating250' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="Ovarian cancer: risk factors relate to increased number of ovulations">many ovulations</span>*: <span id="concept_popover_id_7784" class="concept concept-1 trigger-link" data-cid="7784" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7784'>You've been tested on this concept once, 2 weeks ago, and got the associated question incorrect.</div><br><div id='div_concept_rating7784' class='text-right' style ='font-size:90%;'>You've rated this <span style='color:green'>important</span> <br><span style = 'border-bottom: 5px solid rgb(234,255,0)'>Importance: <b>54</b></span> </div>" data-original-title="Ovarian cancer - risk factors include: early menarche">early menarche</span>, <span class="concept" data-cid="7785">late menopause</span>, <span class="concept" data-cid="7786">nulliparity</span></li></ul><br>Clinical features are notoriously <span class="concept" data-cid="251">vague</span><br><ul><li>abdominal distension and bloating</li><li>abdominal and pelvic pain</li><li>urinary symptoms e.g. Urgency</li><li>early satiety</li><li>diarrhoea</li></ul><br>Investigations<br><ul><li>CA125<ul><li>NICE recommends a CA125 test is done initially. Endometriosis, menstruation, benign ovarian cysts and other conditions may also raise the CA125 level</li><li>if the CA125 is raised (35 IU/mL or greater) then an urgent ultrasound scan of the abdomen and pelvis should be ordered</li><li><span class="concept" data-cid="9753">a CA125 should not be used for screening for ovarian cancer in asymptomatic women</span></li></ul></li><li>ultrasound</li></ul><br>Diagnosis is difficult and usually involves diagnostic laparotomy<br><br>Management<br><ul><li>usually a combination of surgery and platinum-based chemotherapy</li></ul> <br>Prognosis<br><ul><li>80% of women have advanced disease at presentation</li><li>the all stage 5-year survival is 46%</li></ul><br>*It is traditionally taught that infertility treatment increases the risk of ovarian cancer, as it increases the number of ovulations. Recent evidence however suggests that there is not a significant link. The combined oral contraceptive pill reduces the risk (fewer ovulations) as does having many pregnancies.</div>
---
>OVA and RE
*Egg releases(many ovulations) and RELations(family history) are risk factors for Ovarian Ca
---
!!Ovarian cysts: types
Benign ovarian cysts are extremely common. They may be divided into physiological cysts, benign germ cell tumours, benign epithelial tumours and benign sex cord stromal tumours.
`Complex (i.e. multi-loculated) ovarian cysts should be biopsied to exclude malignancy.`
!!!Physiological cysts (functional cysts)
;Follicular cysts
* commonest type of ovarian cyst
* due to non-rupture of the dominant follicle or failure of atresia in a non-dominant follicle
* commonly regress after several menstrual cycles
;Corpus luteum cyst
* during the menstrual cycle if pregnancy doesn't occur the corpus luteum usually breaks down and disappears. If this doesn't occur the corpus luteum may fill with blood or fluid and form a corpus luteal cyst
* more likely to present with intraperitoneal bleeding than follicular cysts
!!!Benign germ cell tumours
;Dermoid cyst
* also called mature cystic teratomas. Usually lined with epithelial tissue and hence may contain skin appendages, hair and teeth
* most common benign ovarian tumour in woman under the age of 30 years
* median age of diagnosis is 30 years old
* bilateral in 10-20%
* usually asymptomatic. Torsion is more likely than with other ovarian tumours
!!!Benign epithelial tumours
* Arise from the ovarian surface epithelium
;Serous cystadenoma
* the most common benign epithelial tumour which bears a resemblance to the most common type of ovarian cancer (serous carcinoma)
* bilateral in around 20%
* `Most common OvarianCa is Serous Carcinoma`
;Mucinous cystadenoma
* second most common benign epithelial tumour
* they are typically large and may become massive
* if ruptures may cause pseudomyxoma peritonei
!!Peripheral arterial disease (PAD)
is strongly linked to smoking. Patients who still smoke should be given help to ''quit smoking''.
!!!Comorbidities should be treated, including
* hypertension
* diabetes mellitus
* obesity
As with any patient who has established cardiovascular disease, all patients should be taking a StaTin. Atorvastatin 80 mg is currently recommended. In 2010 NICE published guidance suggesting that [[Clopidogrel|AntiPlatelets]] should be used first-line in patients with peripheral arterial disease in preference to aspirin.
''Exercise training'' has been shown to have significant benefits. NICE recommend a supervised exercise programme for all patients with peripheral arterial disease prior to other interventions.
!!!Severe PAD or critical limb ischaemia may be treated by:
* angioplasty
* stenting
* bypass surgery
Amputation should be reserved for patients with critical limb ischaemia who are not suitable for other interventions such as angioplasty of bypass surgery.
!!!Drugs licensed for use in peripheral arterial disease (PAD) include:
* ''naftidrofuryl oxalate'': vasodilator, sometimes used for patients with a poor quality of life
* ''cilostazol'': phosphodiesterase III inhibitor with both antiplatelet and vasodilator effects - not recommended by NICE
<div id="notecontent"><b>IM benzylpenicillin for suspected meningococcal septicaemia in the community</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Age</b></th><th><b>Dose</b></th></tr></thead><tbody><tr><td>< 1 year</td><td>300 mg</td></tr><tr><td>1 - 10 years</td><td>600 mg</td></tr><tr><td>> 10 years</td><td>1200 mg</td></tr></tbody></table></div></div>
<div id="notecontent"><b>NICE guidelines</b><br><br>In 2012 NICE published guidelines on the use of opioids in palliative care. Selected points are listed below. Please see the link for more details.<br><br>Starting treatment<br><ul><li>when starting treatment, offer patients with advanced and progressive disease regular oral modified-release (MR) or oral immediate-release morphine (depending on patient preference), with oral immediate-release morphine for breakthrough pain</li><li>if no comorbidities use 20-30mg of MR a day with 5mg morphine for breakthrough pain. For example, 15mg modified-release morphine tablets twice a day with 5mg of oral morphine solution as required</li><li>oral modified-release morphine should be used in preference to transdermal patches</li><li>laxatives should be prescribed for all patients initiating strong opioids</li><li>patients should be advised that nausea is often transient. If it persists then an antiemetic should be offered</li><li>drowsiness is usually transient - if it does not settle then adjustment of the dose should be considered</li></ul><br><b>SIGN guidelines</b><br><br>SIGN issued guidance on the control of pain in adults with cancer in 2008. Selected points<br><ul><li>the breakthrough dose of morphine is <span id="concept_popover_id_232" class="concept concept-0 trigger-link" data-cid="232" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative232'>You've never been tested on this concept</div><br><div id='div_concept_rating232' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(178,255,0)'>Importance: <b>65</b></span> </div>" data-original-title="Breakthrough dose = 1/6th of daily morphine dose">one-sixth</span> the daily dose of morphine</li><li>all patients who receive opioids should be prescribed a laxative</li><li>opioids should be used with caution in patients with chronic kidney disease<ul><li><span class="concept" data-cid="1456">oxycodone is preferred to morphine in palliative patients with mild-moderate renal impairment</span> </li><li>if renal impairment is more severe, alfentanil, <span class="concept" data-cid="10059">buprenorphine and fentanyl</span> are preferred</li></ul></li><li><span id="concept_popover_id_233" class="concept concept-0 trigger-link" data-cid="233" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative233'>You've never been tested on this concept</div><br><div id='div_concept_rating233' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(219,255,0)'>Importance: <b>57</b></span> </div>" data-original-title="Metastatic bone pain may respond to analgesia, bisphosphonates or radiotherapy">metastatic bone pain</span> may respond to strong opioids, bisphosphonates or radiotherapy. The assertion that NSAIDs are particularly effective for metastatic bone pain is not supported by studies. Strong opioids have the lowest number needed to treat for relieving the pain and can provide quick relief, in contrast to radiotherapy and bisphosphonates*. All patients, however, should be considered for referral to a clinical oncologist for consideration of further treatments such as radiotherapy</li></ul><br><b>Other points</b><br><br>When increasing the dose of opioids the next dose should be increased by <span class="concept" data-cid="236">30-50%</span>.<br><br>In addition to strong opioids, bisphosphonates and radiotherapy, <span class="concept" data-cid="4579">denosumab</span> may be used to treat metastatic bone pain.<br><br><b>Opioid side-effects</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Usually transient</b></th><th><b>Usually persistent</b></th></tr></thead><tbody><tr><td>Nausea<br><span class="concept" data-cid="9215">Drowsiness</span></td><td><span class="concept" data-cid="9212">Constipation</span></td></tr></tbody></table></div><br><b>Conversion between opioids</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>From</b></th><th><b>To</b></th><th><b>Conversion factor</b></th></tr></thead><tbody><tr><td>Oral codeine</td><td>Oral morphine</td><td><span class="concept" data-cid="235">Divide by 10</span></td></tr><tr><td>Oral tramadol</td><td>Oral morphine</td><td><span class="concept" data-cid="234">Divide by 10</span>**</td></tr></tbody></table></div><br>Oxycodone generally causes less sedation, vomiting and pruritis than morphine but more constipation.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th><b>From</b></th><th><b>To</b></th><th><b>Conversion factor</b></th></tr></thead><tbody><tr><td>Oral morphine</td><td>Oral oxycodone</td><td>Divide by 1.5-2***</td></tr></tbody></table></div><br>The current BNF gives the following conversion factors for transdermal perparations<br><ul><li>a transdermal fentanyl 12 microgram patch equates to approximately 30 mg oral morphine daily</li><li>a transdermal buprenorphine 10 microgram patch equates to approximately 24 mg oral morphine daily.</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid4"><thead><tr><th><b>From</b></th><th><b>To</b></th><th><b>Conversion factor</b></th></tr></thead><tbody><tr><td>Oral morphine</td><td>Subcutaneous morphine</td><td><span id="concept_popover_id_4508" class="concept concept-1 trigger-link" data-cid="4508" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4508'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating4508' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="Divide by two for oral to subcutaneous morphine conversion ">Divide by 2</span></td></tr><tr><td>Oral morphine</td><td>Subcutaneous diamorphine</td><td>Divide by 3</td></tr><tr><td>Oral oxycodone</td><td>Subcutaneous diamorphine</td><td>Divide by 1.5</td></tr></tbody></table></div><br>*BMJ 2015;350:h315 Cancer induced bone pain<br><br>**this has previously been stated as 5 but the current version of the BNF states a conversion of 10<br><br>***historically a conversion factor of 2 has been used (i.e. oral oxycodone is twice as strong as oral morphine). The current BNF however uses a conversion rate of 1.5</div>
"""
''PAIN''
MORPHINE SULPHATE 2.5mg-5mg SC Q1H
<hr>''NAUSEA AND/OR VOMITING''
LEVOMEPROMAZINE 6.25mg SC Q4H
<hr>''ANXIETY/SEDATION''
MIDAZOLAM 2.5mg-5mg SC Q2H
<hr>''RESPIRATORY SECRETIONS''
GLYCOPYRRONIUM 400microgram SC Q1H
"""
<b>NICE guidelines</b><br><br>In 2012 NICE published guidelines on the use of opioids in palliative care. Selected
points are listed below. Please see the link for more details.<br><br>Starting treatment<br>
<ul>
<li>when starting treatment, offer patients with advanced and progressive disease regular oral modified-release (MR)
or oral immediate-release morphine (depending on patient preference), with oral immediate-release morphine for
breakthrough pain</li>
<li>if no comorbidities use 20-30mg of MR a day with 5mg morphine for breakthrough pain. For example, 15mg
modified-release morphine tablets twice a day with 5mg of oral morphine solution as required</li>
<li>oral modified-release morphine should be used in preference to transdermal patches</li>
<li>laxatives should be prescribed for all patients initiating strong opioids</li>
<li>patients should be advised that nausea is often transient. If it persists then an antiemetic should be offered
</li>
<li>drowsiness is usually transient - if it does not settle then adjustment of the dose should be considered</li>
</ul><br><b>SIGN guidelines</b><br><br>SIGN issued guidance on the control of pain in adults with cancer in 2008.
Selected points<br>
<ul>
<li>the breakthrough dose of morphine is <span class="concept" data-cid="232">one-sixth</span> the daily dose of
morphine</li>
<li>all patients who receive opioids should be prescribed a laxative</li>
<li>opioids should be used with caution in patients with chronic kidney disease<ul>
<li><span class="concept" data-cid="1456">oxycodone is preferred to morphine in palliative patients with
mild-moderate renal impairment</span> </li>
<li>if renal impairment is more severe, alfentanil, <span class="concept" data-cid="10059">buprenorphine and
fentanyl</span> are preferred</li>
</ul>
</li>
<li><span class="concept" data-cid="233">metastatic bone pain</span> may respond to strong opioids, bisphosphonates
or radiotherapy. The assertion that NSAIDs are particularly effective for metastatic bone pain is not supported
by studies. Strong opioids have the lowest number needed to treat for relieving the pain and can provide quick
relief, in contrast to radiotherapy and bisphosphonates*. All patients, however, should be considered for
referral to a clinical oncologist for consideration of further treatments such as radiotherapy</li>
</ul><br><b>Other points</b><br><br>When increasing the dose of opioids the next dose should be increased by <span
class="concept" data-cid="236">30-50%</span>.<br><br>In addition to strong opioids, bisphosphonates and
radiotherapy, <span class="concept" data-cid="4579">denosumab</span> may be used to treat metastatic bone
pain.<br><br><b>Opioid side-effects</b><br><br>
<div class="table-responsive">
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1">
<thead>
<tr>
<th><b>Usually transient</b></th>
<th><b>Usually persistent</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>Nausea<br><span class="concept" data-cid="9215">Drowsiness</span></td>
<td><span class="concept" data-cid="9212">Constipation</span></td>
</tr>
</tbody>
</table>
</div><br><b>Conversion between opioids</b><br><br>
<div class="table-responsive">
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2">
<thead>
<tr>
<th><b>From</b></th>
<th><b>To</b></th>
<th><b>Conversion factor</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>Oral codeine</td>
<td>Oral morphine</td>
<td><span class="concept" data-cid="235">Divide by 10</span></td>
</tr>
<tr>
<td>Oral tramadol</td>
<td>Oral morphine</td>
<td><span class="concept" data-cid="234">Divide by 10</span>**</td>
</tr>
</tbody>
</table>
</div><br>Oxycodone generally causes less sedation, vomiting and pruritis than morphine but more constipation.<br><br>
<div class="table-responsive">
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3">
<thead>
<tr>
<th><b>From</b></th>
<th><b>To</b></th>
<th><b>Conversion factor</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>Oral morphine</td>
<td>Oral oxycodone</td>
<td>Divide by 1.5-2***</td>
</tr>
</tbody>
</table>
</div><br>The current BNF gives the following conversion factors for transdermal perparations<br>
<ul>
<li>a transdermal fentanyl 12 microgram patch equates to approximately 30 mg oral morphine daily</li>
<li>a transdermal buprenorphine 10 microgram patch equates to approximately 24 mg oral morphine daily.</li>
</ul><br>
<div class="table-responsive">
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid4">
<thead>
<tr>
<th><b>From</b></th>
<th><b>To</b></th>
<th><b>Conversion factor</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>Oral morphine</td>
<td>Subcutaneous morphine</td>
<td><span class="concept" data-cid="4508">Divide by 2</span></td>
</tr>
<tr>
<td>Oral morphine</td>
<td>Subcutaneous diamorphine</td>
<td>Divide by 3</td>
</tr>
<tr>
<td>Oral oxycodone</td>
<td>Subcutaneous diamorphine</td>
<td>Divide by 1.5</td>
</tr>
</tbody>
</table>
</div>
<br>
*BMJ 2015;350:h315 Cancer induced bone pain<br><br>
**this has previously been stated as 5 but the current version of the BNF states a conversion of 10<br><br>
***historically a conversion factor of 2 has been used (i.e. oral oxycodone is twice as strong as oral morphine). The current BNF however uses a conversion rate of 1.5
----
<div id="body_content">
Polyarteritis nodosa (PAN) is a vasculitis affecting medium-sized arteries with necrotizing inflammation leading to aneurysm formation. PAN is more common in middle-aged men and is associated with <span class="concept" data-cid="4834">hepatitis B infection</span>.<br><br>Features<br><ul><li>fever, malaise, arthralgia</li><li>weight loss</li><li>hypertension</li><li><span class="concept" data-cid="9623">mononeuritis multiplex</span>, sensorimotor polyneuropathy</li><li>testicular pain</li><li>livedo reticularis</li><li>haematuria, renal failure</li><li>perinuclear-antineutrophil cytoplasmic antibodies (ANCA) are found in around 20% of patients with 'classic' PAN</li><li>hepatitis B serology positive in 30% of patients</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx125.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><div class="imagetext">Livedo reticularis</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb203b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb203.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb203b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Angiogram from a patient with polyarteritis nodosa. Both kidneys demonstrate beading and numerous microaneurysms affecting the intrarenal vessels. Similar changes are seen affecting the intrahepatic vessels with a few small microaneurysms noted. The proximal branches of the SMA appears normal; however there are no normal straight arteries from the jejunal arteries and lack of normal anastomotic arcades and loops. This is associated with multiple microaneurysms. </div></div>
---
>''P''-[[ANCA]] - PAN
---
Drugs Causing Pancreatitis
* SodiumValproate
* AzaThioprine
* CorticoSteroids
* Thiazides
* Retinoic Acid
!!!<center>''PARACENTESIS''</center>
<center>''Procedure''</center>
<center><iframe width="645" height="484" src="https://www.youtube.com/embed/KVpwXK7cvzQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<div id="notecontent">The following is based on 2012 Commission on Human Medicines (CHM) review of paracetamol overdose management. The big change in these guidelines was the removal of the 'high-risk' treatment line on the normogram. All patients are therefore treated the same regardless of risk factors for hepatotoxicity. The National Poisons Information Service/TOXBASE should always be consulted for situations outside of the normal parameters.<br><br>The minority of patients who <span class="concept" data-cid="9725">present within 1 hour may benefit from activated charcoal to reduce absorption of the drug</span>.<br><br>Acetylcysteine should be given if:<br><ul><li>there is a <span id="concept_popover_id_3125" class="concept concept-1 trigger-link" data-cid="3125" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3125'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating3125' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(96,255,0)'>Importance: <b>81</b></span> </div>" data-original-title="Patients who take a staggered paracetamol overdose should receive treatment with acetylcysteine">staggered overdose</span>* or there is doubt over the time of paracetamol ingestion, regardless of the plasma paracetamol concentration; or</li><li>the plasma paracetamol concentration is on or above a single treatment line joining points of 100 mg/L at 4 hours and 15 mg/L at 15 hours, regardless of risk factors of hepatotoxicity</li></ul><br>Acetylcysteine is now infused over 1 hour (rather than the previous 15 minutes) to reduce the number of adverse effects. <span class="concept" data-cid="2674">Acetylcysteine commonly causes an anaphylactoid reaction (non-IgE mediated mast cell release)</span>. <span class="concept" data-cid="2675">Anaphylactoid reactions to IV acetylcysteine are generally treated by stopping the infusion, then restarting at a slower rate</span>.<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd021b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd021.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd021b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>King's College Hospital criteria for liver transplantation (paracetamol liver failure)</b><br><br>Arterial pH < 7.3, 24 hours after ingestion<br><br>or all of the following:<br><ul><li>prothrombin time > 100 seconds</li><li>creatinine > 300 µmol/l</li><li>grade III or IV encephalopathy</li></ul></th></tr></thead><tbody></tbody></table></div><br>*an overdose is considered staggered if all the tablets were not taken within 1 hour</div>
---
*Patients who present following staggered ingestion of a potentially toxic dose of paracetamol (>75mg/kg) should be commenced on IV acetylcysteine irrespective of serum paracetamol concentrations.
---
!!Skin disorders associated with malignancy
<div id="notecontent">Paraneoplastic syndromes associated with internal malignancies:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Skin disorder</b></th><th><b>Associated malignancies</b></th></tr></thead><tbody><tr><td>Acanthosis nigricans</td><td>Gastric cancer</td></tr><tr><td>Acquired ichthyosis</td><td>Lymphoma</td></tr><tr><td>Acquired hypertrichosis lanuginosa</td><td>Gastrointestinal and lung cancer</td></tr><tr><td>Dermatomyositis</td><td>Ovarian and lung cancer</td></tr><tr><td><span class="concept" data-cid="8990">Erythema gyratum repens</span></td><td>Lung cancer</td></tr><tr><td>Erythroderma</td><td>Lymphoma</td></tr><tr><td>Migratory thrombophlebitis</td><td>Pancreatic cancer</td></tr><tr><td>Necrolytic migratory erythema</td><td>Glucagonoma</td></tr><tr><td>Pyoderma gangrenosum (bullous and non-bullous forms)</td><td>Myeloproliferative disorders</td></tr><tr><td>Sweet's syndrome</td><td>Haematological malignancy e.g. Myelodysplasia - tender, purple plaques</td></tr><tr><td>Tylosis</td><td>Oesophageal cancer</td></tr></tbody></table></div></div>
---
>LANU GI nosa
* LUNG - GI
---
>RED FISH swimming in LYMPH
*Erythroderma - Ichthosis - Lymphoma
---
<div id="notecontent">Parkinson's disease is a progressive neurodegenerative condition caused by <span id="concept_popover_id_10275" class="concept concept-3-u trigger-link" data-cid="10275" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10275'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating10275' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(234,255,0)'>Importance: <b>54</b></span> </div>" data-original-title="Parkinson's Disease is a neurodegenerative disorder involving death of neurones in the substantia nigra">degeneration of dopaminergic neurons in the substantia nigra</span>. This results in a classic triad of features: bradykinesia, tremor and rigidity. The <span class="concept" data-cid="906">symptoms of Parkinson's disease are characteristically asymmetrical</span>.<br><br>Epidemiology<br><ul><li>around twice as common in men</li><li>mean age of diagnosis is 65 years</li></ul><br>Bradykinesia<br><ul><li>poverty of movement also seen, sometimes referred to as hypokinesia</li><li>short, shuffling steps with reduced arm swinging</li><li>difficulty in initiating movement</li></ul><br>Tremor<br><ul><li>most marked at rest, 3-5 Hz</li><li>worse when stressed or tired, <span class="concept" data-cid="10052">improves with voluntary movement</span></li><li>typically 'pill-rolling', i.e. in the thumb and index finger</li></ul><br>Rigidity<br><ul><li>lead pipe</li><li>cogwheel: due to superimposed tremor</li></ul><br>Other characteristic features<br><ul><li>mask-like facies</li><li>flexed posture</li><li>micrographia</li><li>drooling of saliva</li><li>psychiatric features: <span id="concept_popover_id_907" class="concept concept-0 trigger-link" data-cid="907" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative907'>You've never been tested on this concept</div><br><div id='div_concept_rating907' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(158,255,0)'>Importance: <b>69</b></span> </div>" data-original-title="Parkinson's disease - most common psychiatric problem is depression">depression is the most common feature (affects about 40%)</span>; dementia, psychosis and sleep disturbances may also occur</li><li>impaired olfaction</li><li>REM sleep behaviour disorder</li><li>fatigue</li><li>autonomic dysfunction:<ul><li><span class="concept" data-cid="8242">postural hypotension</span></li></ul></li></ul><br><b>Drug-induced parkinsonism</b> has slightly different features to Parkinson's disease:<br><ul><li>motor symptoms are generally rapid onset and bilateral</li><li>rigidity and rest tremor are uncommon</li></ul><br>Diagnosis is usually clinical. However, if there is difficulty differentiating between essential tremor and Parkinson's disease NICE recommend considering <span class="concept" data-cid="1211"><sup>123</sup>I‑FP‑CIT single photon emission computed tomography (SPECT)</span>.<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb024b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb024.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb024b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">A Lewy body (stained brown) in a brain cell of the substantia nigra in Parkinson's disease. The brown colour is positive immunohistochemistry staining for alpha-synuclein.<br></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb026b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb026.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb026b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Discoloration of the substantia nigra due to loss of pigmented nerve cells.<br></div></div>
!!Parkinsons
<div id="body_content">
disease should only be diagnosed, and management initiated, by a <span class="concept" data-cid="5645">specialist</span> with expertise in movement disorders. However, it is important for all doctors to be aware of the medications used in Parkinson's given the prevalence of this condition. NICE published guidelines in 2017 regarding the management of Parkinson's disease.<br><br>For first-line treatment:<br><ul><li>if the motor symptoms are affecting the patient's quality of life: <span class="concept" data-cid="1213">levodopa</span></li><li>if the motor symptoms are not affecting the patient's quality of life: dopamine agonist (non-ergot derived), levodopa or monoamine oxidase B (MAO‑B) inhibitor</li></ul><br>Whilst all drugs used to treat Parkinson's can cause a wide variety of side-effects NICE produced tables to help with decision making:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th>Levodopa</th><th>Dopamine agonists</th><th>MAO‑B inhibitors</th></tr></thead><tbody><tr><td><b>Motor symptoms</b></td><td><span class="concept" data-cid="1214">More improvement in motor symptoms</span></td><td>Less improvement in motor symptoms</td><td>Less improvement in motor symptoms</td></tr><tr><td><b>Activities of daily living</b></td><td><span class="concept" data-cid="1214">More improvement in activities of daily living</span></td><td>Less improvement in activities of daily living</td><td>Less improvement in activities of daily living</td></tr><tr><td><b>Motor complications</b></td><td>More motor complications</td><td>Fewer motor complications</td><td>Fewer motor complications</td></tr><tr><td><b>Adverse events</b></td><td>Fewer specified adverse events*</td><td>More specified adverse events*</td><td>Fewer specified adverse events*</td></tr></tbody></table></div>* excessive sleepiness, <span class="concept" data-cid="4334">hallucinations</span> and impulse control disorders<br><br>If a patient continues to have symptoms despite optimal levodopa treatment or has developed dyskinesia then NICE recommend the addition of a dopamine agonist, MAO‑B inhibitor or catechol‑O‑methyl transferase (COMT) inhibitor as an adjunct. Again, NICE summarise the main points in terms of decision making:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th></th><th>Dopamine agonists</th><th>MAO‑B inhibitors</th><th>COMT inhibitors</th><th>Amantadine</th></tr></thead><tbody><tr><td><b>Motor symptoms</b></td><td>Improvement in motor symptoms</td><td>Improvement in motor symptoms</td><td>Improvement in motor symptoms</td><td>No evidence of improvement in motor symptoms</td></tr><tr><td><b>Activities of daily living</b></td><td>Improvement in activities of daily living</td><td>Improvement in activities of daily living</td><td>Improvement in activities of daily living</td><td>No evidence of improvement in activities of daily living</td></tr><tr><td><b>Off time</b></td><td>More off‑time reduction</td><td>Off‑time reduction</td><td>Off‑time reduction</td><td>No studies reporting this outcome</td></tr><tr><td><b>Adverse events</b></td><td>Intermediate risk of adverse events</td><td>Fewer adverse events</td><td>More adverse events</td><td>No studies reporting this outcome</td></tr><tr><td><b>Hallucinations</b></td><td><span class="concept" data-cid="4334">More risk of hallucinations</span></td><td>Lower risk of hallucinations</td><td>Lower risk of hallucinations</td><td>No studies reporting this outcome</td></tr></tbody></table></div><br><br><b>Specific points regarding Parkinson's medication</b><br><br>NICE reminds us of the risk of acute akinesia or neuroleptic malignant syndrome if medication is not taken/absorbed (for example due to gastroenteritis) and advise against giving patients a 'drug holiday' for the same reason.<br><br>Impulse control disorders have become a significant issue in recent years. These can occur with any dopaminergic therapy but are more common with:<br><ul><li><span class="concept" data-cid="5640">dopamine agonist therapy</span></li><li>a history of previous impulsive behaviours</li><li>a history of alcohol consumption and/or smoking</li></ul><br>If excessive daytime sleepiness develops then patients should not drive. Medication should be adjusted to control symptoms. Modafinil can be considered if alternative strategies fail.<br><br>If orthostatic hypotension develops then a medication review looking at potential causes should be done. If symptoms persist then midodrine (acts on peripheral alpha-adrenergic receptors to increase arterial resistance) can be considered.<br><br><span class="concept" data-cid="9533">Consider glycopyrronium bromide to manage drooling of saliva in people with Parkinson's disease.</span><br><br><b>Further information regarding specific anti-Parkinson's medication</b><br><br><br>Levodopa<br><ul><li>usually combined with a decarboxylase inhibitor (e.g. carbidopa or benserazide) to prevent peripheral metabolism of levodopa to dopamine</li><li>reduced effectiveness with time (usually by 2 years)</li><li>unwanted effects: <span class="concept" data-cid="6277">dyskinesia (involuntary writhing movements)</span>, 'on-off' effect, <span class="concept" data-cid="6272">dry mouth</span>, <span class="concept" data-cid="6273">anorexia</span>, <span class="concept" data-cid="6274">palpitations</span>, <span class="concept" data-cid="6275">postural hypotension</span>, <span class="concept" data-cid="6276">psychosis</span>, drowsiness</li><li>no use in neuroleptic induced parkinsonism</li><li>it is important <span class="concept" data-cid="5641">not to acutely stop levodopa</span>, for example if a patient is admitted to hospital. If a patient with Parkinson's disease cannot take levodopa orally, they can be given a dopamine agonist patch as <span class="concept" data-cid="5643">rescue medication</span> to prevent acute dystonia</li></ul><br>Dopamine receptor agonists<br><ul><li>e.g. <span class="concept" data-cid="6282">bromocriptine</span>, <span class="concept" data-cid="665">ropinirole</span>, <span class="concept" data-cid="6284">cabergoline</span>, <span class="concept" data-cid="6285">apomorphine</span></li><li>ergot-derived dopamine receptor agonists (bromocriptine, cabergoline) have been associated with <span class="concept" data-cid="6278">pulmonary, retroperitoneal and cardiac fibrosis</span>. The Committee on Safety of Medicines advice that an echocardiogram, ESR, creatinine and chest x-ray should be obtained prior to treatment and patients should be closely monitored</li><li>patients should be warned about the potential for dopamine receptor agonists to cause impulse control disorders and excessive daytime somnolence</li><li>more likely than levodopa to cause hallucinations in older patients. Nasal congestion and postural hypotension are also seen in some patients</li></ul> <br>MAO-B (Monoamine Oxidase-B) inhibitors<br><ul><li>e.g. <span class="concept" data-cid="6286">selegiline</span></li><li>inhibits the breakdown of dopamine secreted by the dopaminergic neurons</li></ul><br>Amantadine<br><ul><li>mechanism is not fully understood, probably increases dopamine release and inhibits its uptake at dopaminergic synapses</li><li>side-effects include <span class="concept" data-cid="6302">ataxia</span>, <span class="concept" data-cid="6303">slurred speech</span>, <span class="concept" data-cid="6304">confusion</span>, <span class="concept" data-cid="6305">dizziness</span> and <span class="concept" data-cid="6306">livedo reticularis</span></li></ul><br>COMT (Catechol-O-Methyl Transferase) inhibitors<br><ul><li>e.g. <span class="concept" data-cid="6287">entacapone</span>, <span class="concept" data-cid="6291">tolcapone</span></li><li>COMT is an enzyme involved in the breakdown of dopamine, and hence may be used as an adjunct to levodopa therapy</li><li>used in conjunction with levodopa in patients with established PD</li></ul><br>Antimuscarinics<br><ul><li>block cholinergic receptors</li><li>now used more to treat drug-induced parkinsonism rather than idiopathic Parkinson's disease</li><li>help tremor and rigidity</li><li>e.g. <span class="concept" data-cid="6290">procyclidine</span>, <span class="concept" data-cid="6289">benzotropine</span>, trihexyphenidyl (<span class="concept" data-cid="6288">benzhexol</span>)</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb025b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb025.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb025b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Diagram showing the mechanism of action of Parkinson's drugs<br></div></div>
---
>CABERE BRA causes FIBROSIS of underlying LUNGS & HEART
*ergot-derived dopamine receptor agonists (bromocriptine, cabergoline) have been associated with pulmonary, retroperitoneal and cardiac fibrosis
---
>TRY BENZ or PRO CYLE if TREMORS
*procyclidine, benzotropine, trihexyphenidyl (benzhexol) for tremor and rigidity
---
!!Primary biliary cholangitis
(previously referred to as primary biliary cirrhosis) is a chronic liver disorder typically seen in middle-aged females (female:male ratio of 9:1). The aetiology is not fully understood although it is thought to be an autoimmune condition. Interlobular bile ducts become damaged by a chronic inflammatory process causing progressive cholestasis which may eventually progress to cirrhosis. The classic presentation is ``itching in a middle-aged woman``
Associations
* Sjogren's syndrome (seen in up to 80% of patients)
* rheumatoid arthritis
* systemic sclerosis
* thyroid disease
Clinical features
* early: may be asymptomatic (e.g. raised ALP on routine LFTs) or fatigue, pruritus
* cholestatic jaundice
* hyperpigmentation, especially over pressure points
* around 10% of patients have right upper quadrant pain
* xanthelasmas, xanthomata
* also: clubbing, hepatosplenomegaly
* late: may progress to liver failure
Diagnosis
*''M'' Rule:
* anti-''M''itochondrial antibodies (AMA) ''M2'' subtype are present in 98% of patients and are highly specific
* smooth ''M''uscle antibodies in 30% of patients
* raised serum Ig''M''
*''M''iddle aged females
Management
* pruritus: cholestyramine
* fat-soluble vitamin supplementation
* ursodeoxycholic acid
* liver transplantation e.g. if bilirubin > 100 (PBC is a major indication) - recurrence in graft can occur but is not usually a problem
Complications
* cirrhosis, portal hypertension (ascites, variceal haemorrhage)
* significantly increased risk of hepatocellular carcinoma(20-fold increased risk)
* malabsorption(ADEK): osteomalacia, osteoporosis, coagulopathy
* sicca syndrome occurs in 70% of cases
---
>AUTO moBILE
*BILIary is AUTOimmune: SS, SS, RA, Thyroid, Mitochondrial M2, ~IgM, smooth muscle ab
---
>Biliary SS-thyroid
*Systemic Sclerosis - Sjogren's Syndrome - RA - Thyroid
---
>PBCnivas sings like JOLA
*PBC association with Sjogren's (anti JO anti LA) and Sicca syndrome(70% Dry mouth not related to Sjogren)
---
>PBC sings in ALPs (mountains)
*ALP raised in PBC
---
* Polycystic ovarian syndrome (PCOS) is not uncommon and often presents in patients who have a disrupted menstrual cycle or who are struggling to conceive.
* Investigation should include blood tests and an ultrasound scan.
* Patients usually have raised Luteinizing hormone (LH) and testosterone and have a decreased level of sex-hormone binding globulin.
* These patients often struggle to conceive.
>LH in PCOD - FSH in Menopause
:Raised Hormones
<div id="notecontent">Overview<br><ul><li>a form of congenital heart defect</li><li>generally classed as 'acyanotic'. However, uncorrected can eventually result in late cyanosis in the lower extremities, termed differential cynaosis.</li><li>connection between the pulmonary trunk and descending aorta</li><li>usually the <span class="concept" data-cid="9553">ductus arteriosus closes with the first breaths due to increased pulmonary flow which enhances prostaglandins clearance</span></li><li>more common in premature babies, born at high altitude or maternal rubella infection in the first trimester</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd012b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd012.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd012b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Features<br><ul><li><span class="concept" data-cid="8675">left subclavicular thrill</span></li><li><span id="concept_popover_id_4909" class="concept concept-3-u trigger-link" data-cid="4909" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4909'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating4909' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(239,255,0)'>Importance: <b>53</b></span> </div>" data-original-title="Patent ductus arteriosus: machinery murmur at the upper left sternal edge">continuous 'machinery' murmur</span></li><li><span class="concept" data-cid="941">large volume, bounding, collapsing pulse</span></li><li><span class="concept" data-cid="8676">wide pulse pressure</span></li><li>heaving apex beat</li></ul><br>Management<br><ul><li><span class="concept" data-cid="8677">indomethacin or ibupofen</span><ul><li>given to the neonate</li><li><span class="concept" data-cid="1931">inhibits prostaglandin synthesis</span></li><li>closes the connection in the majority of cases</li></ul></li><li>if associated with another congenital heart defect amenable to surgery then <span id="concept_popover_id_3498" class="concept concept-1 trigger-link" data-cid="3498" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3498'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating3498' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(76,255,0)'>Importance: <b>85</b></span> </div>" data-original-title="A patent ductus arteriosis can be kept open with prostaglandins. This may be useful in duct dependent cardiac lesions">prostaglandin E1 is useful to keep the duct open</span> until after surgical repair</li></ul></div>
`Duct dependent cardiac lesions include: tetralogy of fallot, ebstein’s anomaly, pulmonary atresia and pulmonary stenosis. They are often diagnosed antenatally but may present at birth with cyanosis, tachypnoea and poor peripheral pulses. Often the definitive treatment is surgery, however keeping the duct open can buy time for the management to be appropriately planned`
!!Phosphodiesterase type V (PDE5) inhibitors
are used in the treatment of erectile dysfunction. They are also used in the management of pulmonary hypertension. PDE5 inhibitors cause vasodilation through an increase in cGMP leading to smooth muscle relaxation in blood vessels supplying the corpus cavernosum.
Examples
* sildenafil (Viagra) - this was the first phosphodiesterase type V inhibitor
* tadalafil (Cialis)
* vardenafil (Levitra)
Contraindications
* patients taking nitrates and related drugs such as nicorandil
* hypotension
* recent stroke or myocardial infarction (NICE recommend waiting 6 months)
Side-effects
* visual disturbances e.g. blue discolouration, non-arteritic anterior ischaemic neuropathy
* nasal congestion
* flushing
* gastrointestinal side-effects, Dyspepsia
* headache
The ''blue pill'', Viagra (sildenafil), causes ''blue discolouration of vision''
<div id="body_content">
We know from experience that few patients (around 10%) present with the medical student textbook triad of pleuritic chest pain, dyspnoea and haemoptysis. Pulmonary embolism can be difficult to diagnose as it can present with virtually any cardiorespiratory symptom/sign depending on its location and size.<br><br><b>So which features make pulmonary embolism <i>more</i> likely?</b><br><br>The PIOPED study<sup>1</sup> in 2007 looked at the frequency of different symptoms and signs in patients who were diagnosed with pulmonary embolism.<br><br>The relative frequency of common clinical signs is shown below:<br><ul><li>Tachypnea (respiratory rate >20/min) - 96%</li><li>Crackles - 58%</li><li><span class="concept" data-cid="4029">Tachycardia</span> (heart rate >100/min) - 44%</li><li>Fever (temperature >37.8°C) - 43%</li></ul><br>It is interesting to note that the Well's criteria for diagnosing a PE use tachycardia rather than tachypnoea.<br><br><b>2020 NICE guidelines</b><br><br>All patients with symptoms or signs suggestive of a PE should have a history taken, examination performed and a chest x-ray to exclude other pathology.<br><br>NICE updated their guidelines on the investigation and management of venous thromboembolism (VTE) in 2020. One of the key changes was the use of the pulmonary embolism rule-out criteria (the <b>PERC</b> rule)<br><ul><li>a link is provided to PERC rule in the external link section</li><li>this should be done when you think there is a low probability of PE, but want more reassurance that it isn't the diagnosis</li></ul> - NICE define this low probability as < 15%, although it is clearly difficult to quantify such judgements<br> - if your suspicion of PE is greater than this then you should move straight to the 2-level PE Wells score, without doing a PERC<br><br>If a PE is suspected a <span class="concept" data-cid="1464">2-level PE Wells score</span> should be performed:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Clinical feature</b></th><th><b>Points</b></th></tr></thead><tbody><tr><td>Clinical signs and symptoms of DVT (minimum of leg swelling and pain with palpation of the deep veins)</td><td>3</td></tr><tr><td>An alternative diagnosis is less likely than PE</td><td>3</td></tr><tr><td>Heart rate > 100 beats per minute</td><td>1.5</td></tr><tr><td>Immobilisation for more than 3 days or surgery in the previous 4 weeks</td><td>1.5</td></tr><tr><td>Previous DVT/PE</td><td>1.5</td></tr><tr><td>Haemoptysis</td><td>1</td></tr><tr><td>Malignancy (on treatment, treated in the last 6 months, or palliative)</td><td>1</td></tr></tbody></table></div><br>Clinical probability simplified scores<br><ul><li>PE likely - more than 4 points</li><li>PE unlikely - 4 points or less</li></ul><br>If a PE is 'likely' (more than 4 points) arrange an immediate computed tomography pulmonary angiogram (CTPA). <span class="concept" data-cid="7903">If there is a delay in getting the CTPA then interim therapeutic anticoagulation should be given until the scan is performed</span>.<br><ul><li>interim therapeutic anticoagulation used to mean giving low-molecular weight heparin</li><li>NICE updated their guidance in 2020. They now recommend using an anticoagulant that can be continued if the result is positive. </li><li>this means normally a direct oral anticoagulant (DOAC) such as apixaban or rivaroxaban</li></ul><br><span class="concept" data-cid="5005">If a PE is 'unlikely' (4 points or less) arranged a D-dimer test</span><br><ul><li>if positive arrange an immediate computed tomography pulmonary angiogram (CTPA)<ul><li>if there is a delay in getting the CTPA then give interim therapeutic anticoagulation until the scan is performed</li></ul></li><li>if negative then PE is unlikely - consider an alternative diagnosis</li></ul><br>If the patient has an allergy to contrast media or renal impairment a V/Q scan should be used instead of a CTPA.<br><br><b>CTPA or V/Q scan?</b><br><br>The consensus view from the British Thoracic Society and NICE guidelines is as follows:<br><ul><li><span class="concept" data-cid="442">CTPA is now the recommended initial lung-imaging modality for non-massive PE</span>. Advantages compared to V/Q scans include speed, easier to perform out-of-hours, a reduced need for further imaging and the possibility of providing an alternative diagnosis if PE is excluded </li><li>if the CTPA is negative then patients do not need further investigations or treatment for PE</li><li>V/Q scanning may be used initially if appropriate facilities exist, the chest x-ray is normal, and there is no significant symptomatic concurrent cardiopulmonary disease. V/Q scanning is also the investigation of choice if there is <span class="concept" data-cid="3746">renal impairment</span> (doesn't require the use of contrast unlike CTPA)</li></ul><br><br><b>Some other points</b><br><br>D-dimers<br><ul><li>sensitivity = 95-98%, but poor specificity</li></ul><br>ECG<br><ul><li>the classic ECG changes seen in PE are a large S wave in lead I, a large Q wave in lead III and an inverted T wave in lead III - '<span class="concept" data-cid="8260">S1Q3T3</span>'. However, this change is seen in no more than 20% of patients</li><li>right bundle branch block and right axis deviation are also associated with PE</li><li><span class="concept" data-cid="4029">sinus tachycardia</span> may also be seen</li></ul><br>Chest x-ray<br><ul><li>a chest x-ray is <span class="concept" data-cid="1365">recommended for all patients</span> to exclude other pathology</li><li>however, it is typically <span class="concept" data-cid="443">normal in PE</span></li><li>possible findings include a <span class="concept" data-cid="3299">wedge-shaped opacification</span></li></ul><br>V/Q scan<br><ul><li>sensitivity of around 75% and specificity of 97%</li><li>other causes of mismatch in V/Q include old pulmonary embolisms, AV malformations, vasculitis, previous radiotherapy</li><li>COPD gives matched defects</li></ul><br>CTPA<br><ul><li>peripheral emboli affecting subsegmental arteries may be missed</li></ul><br>Pulmonary angiography<br><ul><li>the gold standard</li><li>significant complication rate compared to other investigations</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb065b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb065.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb065b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Labelled CTPA showing a large saddle embolus</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd109b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd109.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd109b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Further CTPA again showing a saddle embolus</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg034b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg034.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg034b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg034c.jpg" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">ECG from a patient with a PE. Shows a sinus tachycardia and a partial S1Q3T3 - the S wave is not particularly convincing.</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg065b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg065.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg065b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg065c.jpg" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">ECG of a patient with a PE. It shows some of the ECG features that may be associated with PE (sinus tachycardia, S1, T3 and T wave inversion in the precordial leads). Other features such as the left axis deviation are atypical.</div><br><br>1. Clinical Characteristics of Patients with Acute Pulmonary Embolism(Data from PIOPED II) Am J Med. Oct 2007; 120(10): 871879.</div>
| !PEDIATRIC DIARRHEA DRUGS |<|
|Loperamide|Tab Lopamide <br>2-5 years (13-20 kg): 1 mg 3 times/day; <br>6-8 years (20-30 kg): 2 mg twice daily; <br>8-12 years (>30 kg): 2 mg 3 times/day|
|Probiotic|Syr Nutrolin-B 1 tsp daily, 7 days|
|Racecadotril|Sach Racigyl 1 sach TDS, 1 wk|
|Zinc|Syr Ascazin 1 tsp daily|
| !DRUG | !DOSE |! TAB |! Syr/5ml |! INJ |! BRAND | !FREQ |
|Acetylcystine|Infant(1-2ml), <br>Child(3-5ml) with double dil|||5ml/vial|Mucinac 20%|TID-QID|
|Acyclovir|10 mg/kg/dose, 3-4 times per day|200|400|500/250|Acivir|QID|
|Adrenaline|0.1 ml/kg of 1:10,000 sol||||Adrenaline||
|Albumin|0.5-1 gm/kg/dose over 1-2 hrs|||20g/100ml|Albumin||
|Amikacin|15-22.5 mg/kg/day div q8h|||50/100/250/500|Ivimicin|Q8H|
|Amoxycillin|25-50 mg/kg/d div in 2/3|125/250|125/250||Mox, Wymox, Novamox|TID|
|Amox-clav|25-45 mg/kg/d div in 2|375/625|200/400|1.2gm|Augmentin|TID|
|Ampicillin|100-200 mg/kg/d div in 4 PO, IM, IV|125/250|125/250||Roscillin|QID|
|Amp+Clox|50-100 mg/kg/d div in 4 PO, IM, IV|125+125|125+125||Ampilox,Megapen|TID|
|Amp Sulb|100-150 mg/kg/d div q6h IV, IM||||||
|Atropine|0.01 mg/kg/dose; max 0.4mg|||0.6 mg/amp|Atropine|OD|
|Azithromycin|10 mg/kg on day1 then 5mg/kg day2-5|100/250|100/200|250/500|Azithral, Azitec|OD|
|Baclofen|< 20 kg 2.5 mg QHS, 2-50 kg 5 mg Qhs, >50 kg 10 mg QHS|10|||Liofen||
|Betamethasone|0.2 mg/kg/d in 2-4 div doses|0.5|2.5||Betnesol|TID|
|Bisacodyl > 3yrs|0.3mg/kg/dose or 5-10mg; Supp:<2yr: 5mg; 2-11yr:5-10mg; >11yr:10mg|5,10|||Dulcolax|HS|
|Bld trans whole|20 ml/kg||||||
|Plasma/PRBC/Plt|10 ml/kg||||||
|Budesonide|0.5-1mg/24hrs|||Resp: 0.5mg|Budecort||
|Calcitriol|0.05 mcg/kg/d|0.25||||BD|
|Calcium Syrup|50 mg/kg/d of elemental Ca|250/500|82||Osteocalcium,<br>Shelcal||
|Carbamzepine|<6yr:St 10mg/kg/d div in 2,max 35/kg/d; 6-12yrs:st 10mg/kg/d div 2,max 1000mg/d; >12yr:st 200mg BD, max 1.2 g/d|100|100||Tegretal|BD|
|Cefixime|10 mg/kg/d OD/BD|100/200|50/100||Zifi, Taxim O|OD|
|Cefotaxim|100-200 mg/kg/d div in 4 IV, IM|||250/500/1000|Taxim||
|Cefpodoxime|10 mg/kg/d div BD|100/200|50/100||Macpod, Monocef O|BD|
|Ceftazidime|100-150mg/kg/d div q8h|||250/500|Fortum||
|Ceftriaxone|50-75 mg/kg/d div OD/BD|||125/250/500|Cefaxone||
|Cefuroxime|75-100 mg/kg/d div in 2-3 PO|250/500|125||Ceftak|BD|
|Cephalexin|50-100 mg/kg/d div QID|125250/500|125/250||Sporidex,Ceff|QID|
|Cefadroxyl(I)|30 mg/kg/d div BD|125/250|125/250||Odoxil, Droxyl|QID|
|Cetrizine|6m-2yr:2.5mg OD; 2-5yr:2.5mg OD max 5mg/d; >6yr:5-10mg OD|10|5|Alerid, Cetzine||
|CPM|0.1 mg/kg/dose X3 PO|4|||CPM|TID|
|Cholecalciferol|400-1000IU/d||||||
|Cinnarazine|0.3-0.5 mg/kg/dose TID|25|||Stugeron, Centigo|TID|
|Ciprofloxacin|20 mg/kg/d div in 2 dose PO|250/500|||Ciplox|BD|
|Clarithromycin|15 mg/kg/d div in 2 PO|250/500|125||Claribid|BD|
|Clindamycin|10-40 mg/kg/d div in 3 dose PO|150/300|||Dalacin-C|TID|
|Clonazepam|0.01-0.03 mg/kg/d div in 3 doses|0.5/1|||Clonotril, Lonazep|TID|
|Cotrimoxazole|8-12 mg/kg/d div in 2 doses|20+100/40+ 200/80+400|40+200||Septran, Bactrim|BD|
|Cyproheptadine|0.25-0.5 mg/kg/d div in 3 doses|4|2||Cypon, Valactin B|TID|
|Dexamethasone|0.6 mg/kg/dose X 1-2 doses|0.5|||Dexona, Decadron|QID|
|Dextromethorpan|1 mg/kg/ddiv in 3-4 doses||||||
|Diazepam|0.3 mg/kg/dose PO, IV|5|2|10mg/2ml|Calmpose, Valium|TID|
|Diclofenec|0.5-1 mg/kg/dose X2-3|50|||Voveran, Dynaford|TID|
|Dicyclomine|> 6m 0.5 mg/kg/dose PO X3|20|10||Cyclopam, Colimex|TID|
|DEC|6 mg/kg/d div in 3 doses|50/100|50/120||Banocide, Hetrazan|TID|
|Diphenhydramine|5 mg/kg/d div in 3-4 doses|25/50|12.5||Benadryl|TID|
|Domperidone|0.2 mg/kg/dose X3|10|5||Domstal|TID|
|Doxycycline|<45kg:2.2mg/kg/dose BD; >45kg:100- 200mg/d|100|||Doxy||
|Erythromycin|40 mg/kg/d div in 4 doses|250/500|125||Eltocin|QID|
|Esomeprazole|1-11yr: 10 mg OD; >12 yr: 20mg OD|10/20|||Nexpro Granules(10)|OD|
|Fentanyl|1-2 mcg/kg/dose||||||
|Fexofenadine|6m-<2Y: 15-30mg BD; 2-11Y: 30mg BD; >12Y: 60mg BD|30|30||Allegra|BD|
|Fluconazole|6-12 mg/kg/d div in 1-2 doses|50,150|||Zocon, Forcan|OD|
|Furosemide|1-2mg/kg/dose PO, IV 0.5-1 mg/kg/dose X3-4 doses/d|40|||Lasix|BD|
|Gentamycin|5-7.5 mg/kg/d div in 3 IM, IV|||80|Genticin||
|Glycerin|<1m: 0.5ml/kg/dose; <6Y: 2-5ml; >6Y: 5- 15ml||||||
|Glucose 25 %|Dextrose 25% 2 ml/kg/dose||||||
|Haloperidol|2-5mg/dose IM|||5mg|Serenace||
|Hydrocortisone|8mg/kg/d div q6h|||100|||
|Hydoxizine|2mg/kg/d div in 3-4 doses|10|10||Atarax|TID|
|Ibuprofen|8-10 mg/kg/dose X3 PO|200/400|100||Ibugesic, Brufen|TID|
|Ipratropium|<12Y: 250-500mcg/dose; >12Y: 500mcg/dose||||Ipravent||
|Iron def anemia|6 mg/kg/day PO after food||||Tonoferon Syr (250/5ml), Peds (80mg/1ml), Dps (25mg/1ml)||
|Iron maint|Maint: 2 mg/kg/d||||||
|Iron sucrose|mg=BW x (14 - Hgb) x (2.145)|100|||Orofer-s||
|Ivermectin|150 mcg/kg/dose single dose|6||||once|
|Lactulose|1.5-3ml/kg/d div BD||||Duphalac||
|Levetiracetam|10mg/kg/dose BD|250/500|500||Levera||
|Levofloxacin|<5Y: 10mg/kg/dose BD; >5Y: 10mg/kg/dose OD|250/500|125||Levoflox, L-cin|OD|
|Levothyroxin|6-10 mcg/kg/dose OD|25/50/100|||Thyronorm||
|Linezolid|10 mg/kg/dose Q12H PO, IV|600|100|200|Linox|BD|
|Loperamide|2-5Y: 1mg TDS; 6-8Y: 2mg BD; 9-11Y: 2mg TDS|2|||Lopamide||
|Lorazepam|0.1 mg/kg bolus. Rept after 15-20 min 1|||Ativan, Trapex||
|Mannitol|2.5-5 ml/kg/dose IV over 30 min|Inj|||Mannitol||
|Mebendazole|100 BD for 3 days|100|100||Mebex|BD|
|Meropenem|60 mg/kg/d div in 3 doses IV|Inj||125/250/500/1|Mero||
|Methylprednisolone|1-2 mg/kg/d|Inj|||Solumedrol||
|Metoclopramide|1-2 mg/kg/dose TDS|5|5|10|Perinorm|TID|
|Metronidazole|30 mg/kg/d div in 3|200|200|500|Metrogyl|TID|
|Midazolam|0.05-0.1 mg/kg/dose|||1|||Midazolam||
|Montelukast|6m-5Y: 4mg OD; 6-14Y: 5mg HS; >15Y:10mg OD|5/10|||Montair||
|Morphine|0.1-0.2 mg/kg/dose|||10|Morphine||
|Nitrofurantoin|7 mg/kg/d div in 4 PO|100|||Martifur|QID|
|Ofloxacin|15 mg/kg/d BD|200|50||Zenflox, OF, Oflox-OZ|BD|
|Omeprazole|1mg/kg/d OD or div in 2|20|||Omez|TID|
|Ondanseteron|0.1 mg/kg/dose|4|2||Emeset, Vomikind|TID|
|Oxcarbamzepine|At 10 mg/kg/d OD/BD|300|||Oxeptal|TID|
|Oxybutinin|>5 yrs: 5 mg PO BD, 0.2 mg/kg/dose|5|||Oxyspas|BD|
|Pantoprazole|1 mg/kg/dose OD|40|||Pantakind|TID|
|Paracetamol|10-15 mg/kg/dose X4|500|125/250||Calpol, Crocin,PCM|QID|
|Phenobarbitone|Loading dose slow IV 10-20 mg/kg|30|20||Gardenal|BD|
|Phenytoin|Load IV 15-20 mg/kgthen 5-8 mg/kg/d|100|125||Dilantin, Eptoin|TID|
|Piperacillin|100-300 mg/kg/d div in 4|Inj|||Pip-taz|
|Prednisolone|2mg/kg/d div in 2 doses|10|||Wysolone|TID|
|Primaquine|0.5 mg/kg/dose PO for 5-14 days|7.5|||Malirid|TID|
|Prochlorperazine|0.4mg/kg/d|5|||Stemetil||
|Promethazine|1 gm/kg/dose PO|25|5||Phenergan|TID|
|Propanolol|1-2 mg/kg/d div in 3-4 doses PO|10|||Inderal|TID|
|Racecadotril|1.5 mg/kg TID|100,10/30 sac|||Racigyl, Redotil, Zedott, Zomatril|TID|
|Ranitidine|2 mg/kg/dose X2 PO|150|||Aciloc|BD|
|Roxithromycin|5-8 mg/kg/d div in 2 PO|50|50||Roxid|BD|
|Salbutamol|<1yr:0.15mg/kg/dose q4-6h;1-5yrs:1.25- 2.5mg/dose; 5-12yrs;2.5mg; >12yrs:2.5- 5mg 2.5mg/2.5ml(1 resp)|||Asthalin|QID|
|Sodium bicarbonate|1-2 ml/kg; 0.3XwtXbase seficit|Inj|||Sod bicarb||
|Sodium phosphate|2-4Y: 33ml; 5-11Y: 66ml; >12:133ml||||PC enema||
|Sodium Valproate|20mg/kg/d div in 3 PO|200|200||Encorate, Valparin|TID|
|Spironolactone|2-3 mg/kg/d div in 2/3|25|||Aldactone|BD|
|Streptomucin|15mg/kg/d IM||||ambistryn||
|Thyroxin|Newborn 10 mcg/kg, child 4-6mcg/kg|50|||Eltroxin|TID|
|Tinidazole|50 mg/kg/d OD PO X3|500|||Tiniba|TID|
|Tobramycin|5-7.5 mg/kg/d div in 3 IV|Inj|||Tobra||
|Ursodeoxycolic acid|5mg/kg/dose, PO 2-3 times|150|||Sorbidol|TID|
|Valproic acid|10-15mg/kg/d div TDS||||Encorate, Valparin||
|Vancomycin|40-50 mg/kg/d div in 3/4|Inj|||Vancotach||
!!!<center>''MALARIA TREATMENT''</center>
| !P VIVAX MALARIA |<|<|<|<|
|!| !LARIAGO/RESOCHIN |! MALIRID 2.5 mg tabs |
| Age (yrs) | STAT, 6 hrs, day2, day3 | Day 1-14 |
| <1 | 1/2, 1/4 | 0 |
| 1-4 | 1, 1/2 | 1 |
| 5-8 | 2, 1 | 2 |
| 9-14 | 3, 1 1/2 | 4 |
| >15 | 4, 2 | 6 |
| !P FALCIPARUM MALARIA |<|
| !LUMEFAX (ARTEMETHER 20mg + LUMEFANTRINE 120 mg) |<|
| STAT, after 8 hrs, BD for next 2 days |<|
| 5-15 kg | 1 tab |
| 15-25 kg | 2 tab |
| 25-35 kg | 3 tab |
| >35kg | 4 tab |
| !Falcigo-SP kit(Artesunate 200mg + Sulfadoxine 750mg + Pyrimethamine 25mg)/<br>Larinate 200(Artesunate (3tab) 200mg+Sulphadoxime 1 tab 750 mg + Pyrimethamine 37.5 mg |<|
CHLORO Syr 50/5m
Artesunate 4mg/kg, sulfadoxamine-pyremethamine 25/1.25/kg once Larinate 200 200(3)+750+37.5
Larinate 100, 100(3)+500+25 Larinate 50, 50(3)+500+25
Atresumate+Mefloquine: Artesunate 4mg/kg 3d, Mefloquine 25mg/kg div 2
Larinate-MF(Atresunate(3tab)200mg+Mefloquine(6tab) 200mg
Inj Artesunate(Falcigo)
2.4 mg/kg
1 tsp OD

LARIAGO/RESOCHIN
l2
MALIRID 2.5 mg tabs
1 tab=20+120
2.5/7.5
WT  10
1
1
IV STAT, 12hrs, 24 hrs then OD
This is to be accompanied by single dose of primaquine (0.75 mg/kg body weight) on Day 2.

Dose
Tab
Syr/5ml
Furesemide
1-2mg/kg/dose PO, IV 0.5-1 mg/kg/dose X3-4 doses/d
40
Lasix
BD
Acyclovir
10 mg/kg/dose, 3-4 times per day
200
400
Acivir,Occuvir, Zovirax
QID
Furazolidone
6 mg/kg/d div in 3 doses
100
TID
Albumin
1 gm/kg/dose over 1-2 hrs
Gentamycin
5-7.5 mg/kg/d div in 3 IM, IV
Genticin
Amikacin
7.5 mg/kg/dose
Ivimicin
Glucose 25 %
Dextrose 25% 2 ml/kg/dose,
Aminophylline load
5 mg/kg/dose
100
Aminophylline
Glucose 50%
50% 1 ml/kg/dose IV
Aminophylline maint
5 mg/kg/dose
100
Aminophylline
Hydoxizine
2mg/kg/d div in 3-4 doses
10
10
Atarax
TID
Amoxycillin
30-50 mg/kg/d div in 3
125/250
125/250
Mox
TID
Ibuprofen
8-10 mg/kg/dose X3 PO
200/400
100
Ibugesic, Brufen
TID
Ampicillin
50-100 mg/kg/d div in 4 PO, IM, IV
125/250
125/250
Broadicillin, Aristocillin
TID
Imipramine
> 5 yrs 25 mg at bedtime
25
Imipramine
Amp+Clox
50-100 mg/kg/d div in 4 PO, IM, IV
125+125
125+125
Ampilox,Megapen
TID
Iron def anemia
6 mg/kg/day PO after food
Orofer, Tonoferon
Amp Sulb
150 mg/kg/d IV, IM
Iron maint
Maint: 2 mg/kg/d
Atenolol
1 mg/kg/d PO OD
25
OD
Ivermectin
150 mcg/kg/dose single dose
6
once
Azithromycin
5-10 mg/kg/d
250/50
200
Azithral,Laz, Kazi
OD
Lactulose
>2yrs: 5 ml X2; > 5 yrs 10 ml X2
Duphalac, Livoluk
Baclofen
< 20 kg 2.5 mg QHS, 2-50 kg 5 mg Qhs, >50 kg 10 mg QHS
10
Liofen
Linezolid
10 mg/kg/dose Q12H PO, IV
600
100
BD
Betamethasone
0.2 mg/kg/d in 2-4 div doses
0.5
2.5
Betnesol
TID
Loperamide
>5 yrs 1 mg BD/TID
2
Lopamide
Bisacodyl > 3yrs
0.2mg/kg/dose 2-3 times/d
5,10
Dulcolax
HS
Lorazepam
0.1 mg/kg bolus. Rept after 15-20 min
1
Ativan, Lopez
Bld trans whole
20 ml/kg
Mannitol
2.5-5 ml/kg/dose IV over 30 min
Inj
plasma/PRBC/Plt
10 ml/kg
Mebendazole
100 BD for 3 days
100
100
Mebex
BD
Calcitriol
0.05 mcg/kg/d
0.25
BD
Meropenem
60 mg/kg/d div in 3 doses IV
Inj
Calcium Syrup
50 mg/kg/d
82
Osteocalcium,Shelcal
Methylprednisolone
1-2 mg/kg/d
Inj
Neo-Drol
Carbamzepine
St 10mg/kg/d div in 2 doses.
100
100
Tegretal
BD
Metoclopramide
0.1 mg/kg/dose TDS
5
5
Perinorm
TID
Cefixime
10 mg/kg/d OD/BD
100/200
50/100
Zifi, Ceftum,Ceftas
OD
Metronidazole
30 mg/kg/d div in 3
200
200
Metrogyl
TID
Cefotaxim
100-200 mg/kg/d div in 4 IV, IM
Taxim
Montelukast
> 5yrs 5 mg at bedtime
5/10
Montair
Cefpodoxime
10 mg/kg/d div BD
100/200
50/100
Cepodem,Gudcef
BD
Nitrofurantoin
7 mg/kg/d div in 4 PO
100
Nitrofur
QID
Ceftriaxone
50-100 mg/kg/d div OD/BD
Cefaxone
Ofloxacin
15 mg/kg/d BD
200
50
Zenflox, OF, Oflox, - OZ
BD
Cefuroxime
15-30 mg/kg/d div in 2-3 PO
250/500
125
Zefu
BD
Omeprazole
1mg/kg/d OD or div in 2
20
TID
Cephalexin
50-100 mg/kg/d div QID
125250/500
125/250
Sporidex,Ceff
QID
Ondanseteron
0.1 mg/kg/dose
4
2
Emeset, Vomikind
TID
Cefadroxyl
30 mg/kg/d div BD
125/250
125/250
Odoxil, Droxyl
QID
oxcarbamzepine
At 10 mg/kg/d OD/BD
300
Oxeptal
TID
Cetrizine
< 5 yrs 2.5 mg OD/BD, > 5 YRS 5 mg OD
10
5
Cetzine
Oxybutinin
>5 yrs: 5 mg PO BD, 0.2 mg/kg/dose
5
Oxyspas
BD
CPM
0.1 mg/kg/dose X3 PO
4
TID
Pantoprazole
1 mg/kg/dose OD
40
Pantakind
TID
Cinnarazine
0.3-0.5 mg/kg/dose TID
25
Stemetil
TID
Paracetamol
10 mg/kg/dose X4
500
125/250
Calpol, Crocin
QID
Ciprofloxacin
20 mg/kg/d div in 2 dose PO
250/500
Ciplox
BD
Phenobarbitone
Loading dose slow IV 10-20 mg/kg
30
20
Gardenal
BD
Clarithromycin
15 mg/kg/d div in 2 PO
250/500
125
Claribid
BD
Phenytoin
Load IV 15-20 mg/kgthen 5-8 mg/kg/d
100
125
Dilantin, Eptoin
TID
Clindamycin
20 mg/kg/d div in 3 dose PO,
150/300
Dalacin-C
TID
Piperacillin
100-300 mg/kg/d div in 4
Inj
Tazomac
Clonazepm
0.01-0.03 mg/kg/d div in 3 doses
0.5/1
Clonotril, Lonazep
TID
Prednisolone
2mg/kg/d div in 2 doses
10
Wysolone
TID
Codeine
1 mg/kg/d div in 3-4 times
Corex
Primaquine
0.3 mg/kg/dose PO for 5-14 days
7.5
Malirid
TID
Cotrimoxazole
6-10 mg/kg/d div in 2 doses
20+100/40+ 200/80+400
40+200
Septran, Bactrim
BD
Promethazine
1 gm/kg/dose PO
25
5
Phenergan
TID
Cyproheptadine
0.25-0.5 mg/kg/d din in 3 doses
4
2
Apetox
TID
Propanolol
1-2 mg/kg/d div in 3-4 doses PO
10
Inderal
TID
Deriphyllin
5 mg/kg/ddose X3 PO, IM
100
50
Deriphyllin
TID
Racecadotril
1.5 mg/kg TID
100,10/30 sac
Racigyl, Redotil, Zedott, Zomatril
TID
Dexamethasone
0.05 mg/kg/dose X 4
0.5
Dexona, Decadron
QID
Ranitidine
2 mg/kg/dose X2 PO
150
Aciloc
BD
Dextromethorpan
1 mg/kg/ddiv in 3-4 doses
Roxithromycin
5-8 mg/kg/d div in 2 PO
50
50
Roxid
BD
Diazepam
0.3 mg/kg/dose PO, IV
5
2
Calmpose, Valium
TID
Salbutamol
0.1 mg/kg/dose X4 PO
2
2
Asthalin
QID
Diclofenec
0.5-1 mg/kg/dose X2-3
50
Voveran, Nac
TID
Sodium bicarbonate
1-2 ml/kg diluted with water
Inj
Dicyclomine
> 6m 0.5 mg/kg/dose PO X3
20
10
Cyclopam, Colimex, Spasmindon
TID
Sodium Valproate
20mg/kg/d div in 3 PO
200
200
Encorate, Valparin
TID
DEC
6 mg/kg/d div in 3 doses
50/100
50/120
Banocide, Hetrazan
TID
Spironolactone
2-3 mg/kg/d div in 2/3
25
Aldactone
BD
Diphenhydramine
5 mg/kg/d div in 3-4 doses
25/50
12.5
Benadryl
TID
Thyroxin
Newborn 10 mcg/kg, child 4-6mcg/kg,
50
Elthroxin
TID
Domperidone
0.2 mg/kg/dose X3
10
5
Domstal
TID
Tinidazole
50 mg/kg/d OD PO X3
500
Tiniba
TID
Enlapril
0.1 mg/kg/dose OD
5
Enam
OD
Tobramycin
5-7.5 mg/kg/d div in 3 IV
Inj
Erythromycin
40 mg/kg/d div in 4 doses
250/500
125
Eltocin
QID
Ursodeoxycolic acid
5mg/kg/dose, PO 2-3 times
150
Ursolic
TID
Fexofenadine
1mg/kg/dose BD, > 5 yrs 30 MG BD
30
30
Allegra, Histafree
BD
Vancomycin
45-60 mg/kg/d div in 3/4
Inj
Fluconazole
6-12 mg/kg/d div in 1-2 doses
50
Zocon
OD


;The 2015 Resuscitation Council Guidelines
* compression:ventilation ratio: lay rescuers should use a ratio of 30:2. If there are two or more rescuers with a duty to respond then a ratio of 15:2 should be used
* age definitions: an infant is a child under 1 year, a child is between 1 year and puberty
;Key points of algorithm (please see link attached for more details)
* unresponsive?
* shout for help
* open airway
* look, listen, feel for breathing
* give 5 rescue breaths
* check for signs of circulation
* 15 chest compressions:2 rescue breaths (see above)
<div id="body_content">
The table below summarises the main characteristics of childhood infections<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Infection</b></th><th><b>Features</b></th></tr></thead><tbody><tr><td><b><span class="concept" data-cid="7665">Chickenpox</span></b></td><td>Fever initially<br> Itchy, rash starting on head/trunk before spreading. Initially macular then papular then vesicular<br> Systemic upset is usually mild</td></tr><tr><td><b><span class="concept" data-cid="7666">Measles</span></b></td><td>Prodrome: irritable, conjunctivitis, fever<br> Koplik spots: white spots ('grain of salt') on buccal mucosa<br> Rash: starts behind ears then to whole body, discrete maculopapular rash becoming blotchy & confluent</td></tr><tr><td><b><span class="concept" data-cid="7667">Mumps</span></b></td><td>Fever, malaise, muscular pain<br> Parotitis ('earache', 'pain on eating'): unilateral initially then becomes bilateral in 70%</td></tr><tr><td><b><span class="concept" data-cid="7668">Rubella</span></b></td><td>Rash: pink maculopapular, initially on face before spreading to whole body, usually fades by the 3-5 day<br> Lymphadenopathy: suboccipital and postauricular</td></tr><tr><td><b><span class="concept" data-cid="7669">Erythema infectiosum</span></b></td><td>Also known as fifth disease or 'slapped-cheek syndrome'<br> Caused by parvovirus B19<br> Lethargy, fever, headache<br> 'Slapped-cheek' rash spreading to proximal arms and extensor surfaces</td></tr><tr><td><b><span class="concept" data-cid="7670">Scarlet fever</span></b></td><td>Reaction to erythrogenic toxins produced by Group A haemolytic streptococci<br> Fever, malaise, tonsillitis<br> 'Strawberry' tongue<br> Rash - fine punctate erythema sparing the area around the mouth (circumoral pallor)</td></tr><tr><td><b><span class="concept" data-cid="7671">Hand, foot and mouth disease</span></b></td><td>Caused by the coxsackie A16 virus<br> Mild systemic upset: sore throat, fever<br> Vesicles in the mouth and on the palms and soles of the feet</td></tr></tbody></table></div></div>
>Measles Eyes, Mouth, behind Ears
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Syndrome</b></th><th><b>Key features</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="6648">Patau syndrome</span> (trisomy 13)<br></td><td><span class="concept" data-cid="6656">Microcephalic, small eyes</span><br><span class="concept" data-cid="6657">Cleft lip/palate</span><br><span class="concept" data-cid="6658">Polydactyly</span><br>Scalp lesions</td></tr><tr><td><span class="concept" data-cid="6645">Edward's syndrome</span> (trisomy 18)<br></td><td><span class="concept" data-cid="6652">Micrognathia</span><br><span class="concept" data-cid="6653">Low-set ears</span><br><span class="concept" data-cid="6659">Rocker bottom feet</span><br><span class="concept" data-cid="6655">Overlapping of fingers</span></td></tr><tr><td><span class="concept" data-cid="6646">Fragile X</span><br></td><td><span class="concept" data-cid="4820">Learning difficulties</span><br>Macrocephaly<br>Long face<br>Large ears<br>Macro-orchidism</td></tr><tr><td><span class="concept" data-cid="6647">Noonan syndrome</span><br></td><td>Webbed neck<br>Pectus excavatum<br>Short stature<br>Pulmonary stenosis</td></tr><tr><td><span class="concept" data-cid="6649">Pierre-Robin syndrome</span>*<br></td><td>Micrognathia<br>Posterior displacement of the tongue (may result in upper airway obstruction)<br>Cleft palate</td></tr><tr><td><span class="concept" data-cid="6650">Prader-Willi syndrome</span><br></td><td>Hypotonia<br>Hypogonadism<br>Obesity</td></tr><tr><td><span class="concept" data-cid="6651">William's syndrome</span><br></td><td>Short stature<br>Learning difficulties<br>Friendly, extrovert personality<br>Transient neonatal hypercalcaemia<br>Supravalvular aortic stenosis</td></tr><tr><td>Cri du chat syndrome (chromosome 5p deletion syndrome)</td><td>Characteristic cry (hence the name) due to larynx and neurological problems<br>Feeding difficulties and poor weight gain<br>Learning difficulties<br>Microcephaly and micrognathism<br>Hypertelorism</td></tr></tbody></table></div><br>*this condition has many similarities with Treacher-Collins syndrome. One of the key differences is that Treacher-Collins syndrome is autosomal dominant so there is usually a family history of similar problems</div>
;Sotos syndrome
* a rare genetic disorder characterised by excessive physical growth during the first 2 to 3 years of life and learning disabilities.
* Dysmorphic features include: macrodolichocephaly, down-slanting palpebral fissures and a pointed chin.
* Patients have a normal life expectancy.
* It is caused by a mutation in the NSD1 (Nuclear receptor-binding SET domain containing protein) gene and is inherited with in an autosomal dominant fashion
---
>Down's Drinking age, Edwards Election age, Patau Puberty
>Down's-21, Edwards-18, Patau-13
---
>''Edward Elected with a Clenched hand under Small Chin''<br>
*low ears, prominent occiput - Neural tube def - Arnold Chiari - Meckel's - Malrotation - VSD
---
>''Patau, Puberty, cleft lip/Palate, Procencephaly, Polydactyly, PDA, vsd, asd, PKD, Pyloric stenosis, omPhalocele''<br>
*Patau's Syndrome (+small eyes & head)<br>
---
>Mental-rocker-HeartDis(VSD-PDA)-holoprocencephaly
*Both Edward-Patau
---
>William is a Super cool Elf with Skills and Friends
*Williams syndrome: del of long arm of 7 with Supravalvular AorticStenosis, Elfian facies, verbal Skills and Friendliness
* small upturned nose, long philtrum (upper lip length), wide mouth, full lips, small chin, and puffiness around the eyes (Angelman and William both have same facies)
---
>Noonan is Male TurNer
---
>ROBIN a DOMINANT TEACHER STRANGULATES the opponents with DOUBLE IMPACT
*ROBIN - AutosomalDominant Treacher - STANGULATION - DOUBLE IMPACT (Big Tongue & MICROGNATHIA)
---
>Xtra size but FRAGILE
*Big long head - BIG ears - BIG testes - Learning difficulties
---
<div id="notecontent">In women the most common cause of pelvic pain is primary dysmenorrhoea. Some women also experience transient pain in the middle of their cycle secondary to ovulation (MittelSchmerz). The table below gives characteristic features for other conditions causing pelvic pain:<br><br><b>Usually acute</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Condition</th><th>Notes</th></tr></thead><tbody><tr><td><b>Ectopic pregnancy</b></td><td>A typical history is a female with a history of 6-8 weeks amenorrhoea who presents with lower abdominal pain and later develops vaginal bleeding<br>Shoulder tip pain and cervical excitation may be seen</td></tr><tr><td><b>Urinary tract infection</b></td><td>Dysuria and frequency are common but women may experience suprapubic burning secondary to cystitis</td></tr><tr><td><b>Appendicitis</b></td><td>Pain initial in the central abdomen before localising to the right iliac fossa<br>Anorexia is common<br>Tachycardia, low-grade pyrexia, tenderness in RIF<br>Rovsing's sign: more pain in RIF than LIF when palpating LIF</td></tr><tr><td><b>Pelvic inflammatory disease</b></td><td>Pelvic pain, fever, deep dyspareunia, vaginal discharge, dysuria and menstrual irregularities may occur<br>Cervical excitation may be found on examination</td></tr><tr><td><b>Ovarian torsion</b></td><td>Usually sudden onset unilateral lower abdominal pain. Onset may coincide with exercise.<br>Nausea and vomiting are common<br>Unilateral, tender adnexal mass on examination</td></tr><tr><td><b>Miscarriage</b></td><td>Vaginal bleeding and crampy lower abdominal pain following a period of amenorrhoea</td></tr></tbody></table></div><br><b>Usually chronic</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Condition</th><th>Notes</th></tr></thead><tbody><tr><td><b>Endometriosis</b></td><td>Chronic pelvic pain<br>Dysmenorrhoea - pain often starts days before bleeding<br>Deep dyspareunia <br>Subfertility</td></tr><tr><td><b>Irritable bowel syndrome</b></td><td>Extremely common. The most consistent features are abdominal pain, bloating and change in bowel habit<br>Features such as lethargy, nausea, backache and bladder symptoms may also be present</td></tr><tr><td><b>Ovarian cyst</b></td><td>Unilateral dull ache which may be intermittent or only occur during intercourse. Torsion or rupture may lead to severe abdominal pain<br>Large cysts may cause abdominal swelling or pressure effects on the bladder</td></tr><tr><td><b>Urogenital prolapse</b></td><td>Seen in older women<br>Sensation of pressure, heaviness, 'bearing-down'<br>Urinary symptoms: incontinence, frequency, urgency</td></tr></tbody></table></div></div>
<div id="notecontent">Pemphigus vulgaris is an autoimmune disease caused by antibodies directed against <span class="concept" data-cid="5590">desmoglein 3</span>, a cadherin-type epithelial cell adhesion molecule. It is more common in the Ashkenazi Jewish population.<br><br><span class="concept" data-cid="9112">Features</span><br><ul><li><span id="concept_popover_id_153" class="concept concept-3-u trigger-link" data-cid="153" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative153'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating153' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(158,255,0)'>Importance: <b>69</b></span> </div>" data-original-title="Blisters/bullae
- no mucosal involvement: bullous pemphigoid
- mucosal involvement: pemphigus vulgaris">mucosal ulceration</span> is common and often the presenting symptom. Oral involvement is seen in 50-70% of patients</li><li>skin blistering - flaccid, easily ruptured vesicles and bullae. Lesions are typically painful but not itchy. These may develop months after the initial mucosal symptoms. Nikolsky's describes the spread of bullae following application of horizontal, tangential pressure to the skin</li><li>acantholysis on biopsy</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd102b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd102.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd102b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Mucosal ulceration is common with pemphigus</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd103b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd103.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd103b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd104b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd104.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd104b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Management<br><ul><li><span class="concept" data-cid="10506">steroids are first-line</span></li><li>immunosuppressants</li></ul></div>
!!Penile cancer
is a rare form of cancer that is `usually a squamous cell carcinoma`.
!!!Features
* penile lump
* penile ulceration
!!!Risk factors:
* Human immunodeficiency virus infection
* Human papillomavirus virus infection
* Genital warts
* Poor hygiene
* Phimosis
* Paraphimosis
* Balanitis
* Age >50
!!!Treatment:
* Radiotherapy
* Chemotherapy
* Surgery
!!!Prognosis:
* Approximately 50% at 5 years
<div id="notecontent">Hepatitis A<br><ul><li>Human Normal Immunoglobulin (HNIG) or hepatitis A vaccine may be used depending on the clinical situation</li></ul><br>Hepatitis B<br><ul><li>HBsAg positive source: if the person exposed is a known responder to HBV vaccine then a booster dose should be given. If they are in the process of being vaccinated or are a non-responder they need to have hepatitis B immune globulin (HBIG) and the vaccine</li><li>unknown source: for known responders the green book advises considering a booster dose of HBV vaccine. For known non-responders HBIG + vaccine should be given whilst those in the process of being vaccinated should have an accelerated course of HBV vaccine</li></ul><br>Hepatitis C<br><ul><li>monthly PCR - if seroconversion then interferon +/- ribavirin</li></ul><br>HIV<br><ul><li>the risk of HIV transmission depends heavily on the incident (e.g. needle stick, type of sexual intercourse, human bite etc) and the current <span class="concept" data-cid="10630">viral load</span> of the patient</li><li>please see the BHIVA link for charts which outline the risk depending on the incident. Generally, low-risk incidents such as <span class="concept" data-cid="8596">human bites</span> don't require post-exposure prophylaxis</li><li>a combination of oral antiretrovirals (e.g. Tenofovir, emtricitabine, lopinavir and ritonavir) as soon as possible (i.e. Within 1-2 hours, but may be started up to 72 hours following exposure) for <span id="concept_popover_id_947" class="concept concept-0 trigger-link" data-cid="947" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative947'>You've never been tested on this concept</div><br><div id='div_concept_rating947' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(76,255,0)'>Importance: <b>85</b></span> </div>" data-original-title="Post-exposure prophylaxis for HIV: oral antiretroviral therapy for 4 weeks">4 weeks</span></li><li>serological testing at 12 weeks following completion of post-exposure prophylaxis</li><li>reduces risk of transmission by 80%</li></ul><br>Varicella zoster<br><ul><li>VZIG for IgG negative pregnant women/immunosuppressed</li></ul><br><b>Estimates of transmission risk for single needlestick injury</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Hepatitis B</th><th>20-30%</th></tr></thead><tbody><tr><td>Hepatitis C</td><td>0.5-2%</td></tr><tr><td>HIV</td><td>0.3%</td></tr></tbody></table></div></div>
The most common cause of a perforated tympanic membrane is infection. Other causes include barotrauma or direct trauma.
A perforated tympanic membrane may lead to hearing loss depending on the size and also increase the risk of otitis media.
Management
* no treatment is needed in the majority of cases as the tympanic membrane will usually heal after 6-8 weeks. It is advisable to avoid getting water in the ear during this time
* it is common practice to prescribe antibiotics to perforations which occur following an episode of acute otitis media. NICE support this approach in the 2008 Respiratory tract infection guidelines
* myringoplasty may be performed if the tympanic membrane does not heal by itself
<div id="notecontent">The 2015 Resuscitation Council (UK) guidelines have simplified the advice given for the management of peri-arrest tachycardias. Separate algorithms for the management of broad-complex tachycardia, narrow complex tachycardia and atrial fibrillation have been replaced by one unified treatment algorithm<br><br>Following basic ABC assessment, patients are classified as being stable or unstable according to the presence of any adverse signs:<br><ul><li>shock: hypotension (<span class="concept" data-cid="10903">systolic blood pressure < 90 mmHg</span>), pallor, sweating, cold, clammy extremities, confusion or impaired consciousness</li><li>syncope</li><li>myocardial ischaemia</li><li>heart failure </li></ul><br>If any of the above <span class="concept" data-cid="1327">adverse signs are present then synchronised DC shocks</span> should be given<br><br>Treatment following this is given according to whether the QRS complex is narrow or broad and whether the rhythm is regular or irregular. The full treatment algorithm can be found at the Resuscitation Council website, below is a very limited summary:<br><br><b>Broad-complex tachycardia</b><br><br>Regular<br><ul><li>assume ventricular tachycardia (unless previously confirmed SVT with bundle branch block)</li><li>loading dose of amiodarone followed by 24 hour infusion</li></ul><br>Irregular<br><ul><li>1. AF with bundle branch block - treat as for narrow complex tachycardia</li><li>2. Polymorphic VT (e.g. Torsade de pointes) - IV magnesium</li></ul><br><b>Narrow-complex tachycardia</b><br><br>Regular<br><ul><li>vagal manoeuvres followed by IV adenosine</li><li>if above unsuccessful consider diagnosis of atrial flutter and control rate (e.g. Beta-blockers)</li></ul><br>Irregular<br><ul><li>probable atrial fibrillation</li><li>if onset < 48 hr consider electrical or chemical cardioversion</li><li>rate control (e.g. Beta-blocker or digoxin) and anticoagulation</li></ul></div>
!!Drugs Causing Peripheral Neuropathy
* IsoNiazid
* PhenyToin
* MetroNidazole
* NitroFurantoin
* AmioDarone
<div id="notecontent">Peripheral neuropathy may be divided into conditions which predominately cause a motor or sensory loss<br><br>Predominately motor loss<br><ul><li>Guillain-Barre syndrome</li><li>porphyria</li><li>lead poisoning</li><li>hereditary sensorimotor neuropathies (HSMN) - Charcot-Marie-Tooth </li><li>chronic inflammatory demyelinating polyneuropathy (CIDP)</li><li>diphtheria</li></ul><br>Predominately sensory loss<br><ul><li>diabetes</li><li><span class="concept" data-cid="9628">uraemia</span></li><li>leprosy</li><li>alcoholism</li><li>vitamin B12 deficiency</li><li>amyloidosis</li></ul><br>Alcoholic neuropathy<br><ul><li>secondary to both direct toxic effects and reduced absorption of B vitamins</li><li>sensory symptoms typically present prior to motor symptoms</li></ul><br>Vitamin B12 deficiency<br><ul><li>subacute combined degeneration of spinal cord</li><li>dorsal column usually affected first (joint position, vibration) prior to distal paraesthesia</li></ul></div>
---
*Taking more than 200mg a day of vitamin B6 for several months can lead to peripheral neuropathy.
---
;Typical Pictures
Hyposplenism e.g. post-splenectomy
*target cells
*Howell-Jolly bodies
*Pappenheimer bodies
*siderotic granules
*acanthocytes
Iron-deficiency anaemia
*target cells
*'pencil' poikilocytes
*if combined with B12/folate deficiency a 'dimorphic' film occurs with mixed microcytic and macrocytic cells
Myelofibrosis
*'tear-drop' poikilocytes
Intravascular haemolysis
*schistocytes
Megaloblastic anaemia
*hypersegmented neutrophils
---
<div id="body_content">
<b>Pathological red cell forms</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Abnormality</b></th><th><b>Associated condition(s)</b></th><th><b>Appearance</b></th></tr></thead><tbody><tr><td>Target cells</td><td><span class="concept" data-cid="6135">Sickle-cell</span>/<span class="concept" data-cid="6136">thalassaemia</span><br><span class="concept" data-cid="6137">Iron-deficiency anaemia</span><br><span class="concept" data-cid="6138">Hyposplenism</span><br><span class="concept" data-cid="6139">Liver disease</span><br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd110b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd110.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd110b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>'Tear-drop' poikilocytes</td><td><span class="concept" data-cid="6140">Myelofibrosis</span><br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd111b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd111.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd111b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>Spherocytes</td><td>Hereditary spherocytosis<br><span class="concept" data-cid="9743">Autoimmune hemolytic anaemia</span><br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd112b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd112.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd112b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>Basophilic stippling</td><td><span class="concept" data-cid="6132">Lead poisoning</span><br><span class="concept" data-cid="6133">Thalassaemia</span><br>Sideroblastic anaemia<br>Myelodysplasia<br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd113b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd113.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd113b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>Howell-Jolly bodies</td><td>Hyposplenism<br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd114b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd114.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd114b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>Heinz bodies</td><td><span class="concept" data-cid="6134">G6PD deficiency</span><br><span class="concept" data-cid="6143">Alpha-thalassaemia</span><br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd115b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd115.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd115b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>Schistocytes ('helmet cells')</td><td><span class="concept" data-cid="3011">Intravascular haemolysis</span><br><span class="concept" data-cid="6144">Mechanical heart valve</span><br><span class="concept" data-cid="6147">Disseminated intravascular coagulation</span><br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd116b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd116.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd116b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>'Pencil' poikilocytes</td><td><span class="concept" data-cid="6142">Iron deficency anaemia</span><br></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd117b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd117.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd117b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>Burr cells (echinocytes)</td><td><span class="concept" data-cid="6145">Uraemia</span><br><span class="concept" data-cid="6146">Pyruvate kinase deficiency</span></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd118b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd118.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd118b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr><tr><td>Acanthocytes</td><td><span class="concept" data-cid="6149">Abetalipoproteinemia</span></td><td><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd119b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd119.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd119b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center> </td></tr></tbody></table></div><br>Other blood film abnormalities:<br><ul><li>hypersegmented neutrophils: <span class="concept" data-cid="6141">megaloblastic anaemia</span></li></ul></div>
---
>with IRON SICKLE, THALAIVA, TARGET LIVER & hypoSPLEEN
---
>Basophlic MTSm
*Myelodysplasia-Thal-Sidero/Lead
---
>ROUND by BIRTH or on AUTO calorie CUTTING
*SPHEROcytosis-HEREDITARY Spherocytosis-AUTOimmune LYTIC
---
>Blood cells are JOLLY when NO SPLEEN
---
>Heinz is ALPHA OX blood
*Alpha Thal-G6PD
---
>ACanth-ABeta
---
>BURREMIA
*BURR in UREmia-pyRRUVATE
---
>Schistocytes-FIGHT with HELMET
*Intravascular hemolysis - Mech Valve - DIC
---
>use PENCIL when you are Deficient(iron)
---
>TEAR DROPS when FIBROSED marrow - POIKILO meat
*TEAR DROPS - myeloFIBROSIS - POIKILOcytes
---
<div id="notecontent"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Disorder</b></th><th><b>Features</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="6485">Antisocial</span></td><td><ul><li><span class="concept" data-cid="5189">Failure to conform to social norms</span> with respect to lawful behaviors as indicated by repeatedly performing acts that are grounds for arrest;</li><li><span class="concept" data-cid="1845">More common in men</span>;</li><li>Deception, as indicated by repeatedly lying, use of aliases, or conning others for personal profit or pleasure; </li><li>Impulsiveness or failure to plan ahead; </li><li>Irritability and aggressiveness, as indicated by repeated physical fights or assaults; </li><li>Reckless disregard for safety of self or others; </li><li>Consistent irresponsibility, as indicated by repeated failure to sustain consistent work behavior or honor financial obligations; </li><li><span class="concept" data-cid="5194">Lack of remorse, as indicated by being indifferent to or rationalizing having hurt, mistreated, or stolen from another</span></li></ul></td></tr><tr><td><span class="concept" data-cid="6486">Avoidant</span></td><td><ul><li> Avoidance of occupational activities which involve significant interpersonal contact due to fears of criticism, or rejection.</li><li> Unwillingness to be involved unless certain of being liked</li><li> <span class="concept" data-cid="5190">Preoccupied with ideas that they are being criticised or rejected in social situations</span></li><li> Restraint in intimate relationships due to the fear of being ridiculed</li><li> Reluctance to take personal risks doe to fears of embarrassment</li><li> Views self as inept and inferior to others</li><li> Social isolation accompanied by a craving for social contact</li></ul></td></tr><tr><td><span class="concept" data-cid="6487">Borderline</span></td><td><ul><li> <span class="concept" data-cid="5191">Efforts to avoid real or imagined abandonment</span></li><li> <span class="concept" data-cid="4377">Unstable interpersonal relationships which alternate between idealization and devaluation</span></li><li> Unstable self image</li><li> Impulsivity in potentially self damaging area (e.g. Spending, sex, substance abuse)</li><li> Recurrent suicidal behaviour</li><li> Affective instability</li><li> Chronic feelings of emptiness</li><li> Difficulty controlling temper</li><li> Quasi psychotic thoughts</li></ul></td></tr><tr><td><span class="concept" data-cid="6488">Dependent</span></td><td><ul><li> <span class="concept" data-cid="5192">Difficulty making everyday decisions without excessive reassurance from others</span></li><li> Need for others to assume responsibility for major areas of their life</li><li> Difficulty in expressing disagreement with others due to fears of losing support</li><li> Lack of initiative</li><li> Unrealistic fears of being left to care for themselves</li><li> Urgent search for another relationship as a source of care and support when a close relationship ends</li><li> Extensive efforts to obtain support from others</li><li> Unrealistic feelings that they cannot care for themselves</li></ul></td></tr><tr><td><span class="concept" data-cid="6489">Histrionic</span></td><td><ul><li> <span class="concept" data-cid="5193">Inappropriate sexual seductiveness</span></li><li> <span class="concept" data-cid="1845">Need to be the centre of attention</span></li><li> <span class="concept" data-cid="1845">Rapidly shifting and shallow expression of emotions</span></li><li> Suggestibility</li><li> Physical appearance used for attention seeking purposes</li><li> Impressionistic speech lacking detail</li><li> Self dramatization</li><li> Relationships considered to be more intimate than they are</li></ul></td></tr><tr><td><span class="concept" data-cid="6490">Narcissistic</span></td><td><ul><li> <span class="concept" data-cid="3162">Grandiose sense of self importance</span></li><li> Preoccupation with fantasies of unlimited success, power, or beauty</li><li> Sense of entitlement</li><li> Taking advantage of others to achieve own needs</li><li> Lack of empathy</li><li> Excessive need for admiration</li><li> Chronic envy</li><li> Arrogant and haughty attitude</li></ul></td></tr><tr><td><span class="concept" data-cid="6491">Obsessive-compulsive</span></td><td><ul><li>Is occupied with details, rules, lists, order, organization, or agenda to the point that the key part of the activity is gone</li><li><span id="concept_popover_id_4805" class="concept concept-1 trigger-link" data-cid="4805" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4805'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating4805' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(76,255,0)'>Importance: <b>85</b></span> </div>" data-original-title="Obsessive-compulsive personality: perfectionism at the expense of completing tasks">Demonstrates perfectionism that hampers with completing tasks</span></li><li>Is extremely dedicated to work and efficiency to the elimination of spare time activities</li><li>Is <span class="concept" data-cid="8950">meticulous, scrupulous, and rigid about etiquettes of morality, ethics, or values</span></li><li>Is not capable of disposing worn out or insignificant things even when they have no sentimental meaning</li><li>Is unwilling to pass on tasks or work with others except if they surrender to exactly their way of doing things</li><li>Takes on a stingy spending style towards self and others; and shows stiffness and stubbornness</li></ul></td></tr><tr><td><span class="concept" data-cid="6492">Paranoid</span></td><td><ul><li> <span class="concept" data-cid="5195">Hypersensitivity and an unforgiving attitude when insulted</span></li><li> Unwarranted tendency to questions the loyalty of friends</li><li> Reluctance to confide in others</li><li> Preoccupation with conspirational beliefs and hidden meaning</li><li> Unwarranted tendency to perceive attacks on their character</li></ul></td></tr><tr><td><span class="concept" data-cid="6493">Schizoid</span></td><td><ul><li> Indifference to praise and criticism</li><li> <span class="concept" data-cid="4103">Preference for solitary activities</span></li><li> <span class="concept" data-cid="4103">Lack of interest in sexual interactions</span></li><li> Lack of desire for companionship</li><li> Emotional coldness</li><li> Few interests</li><li> Few friends or confidants other than family</li></ul></td></tr><tr><td><span class="concept" data-cid="6494">Schizotypal</span></td><td><ul><li> Ideas of reference (differ from delusions in that some insight is retained)</li><li> <span class="concept" data-cid="1845">Odd beliefs</span> and magical thinking</li><li> Unusual perceptual disturbances</li><li> Paranoid ideation and suspiciousness</li><li> Odd, eccentric behaviour</li><li> <span class="concept" data-cid="8949">Lack of close friends</span> other than family members</li><li> Inappropriate affect</li><li> Odd speech without being incoherent</li></ul></td></tr></tbody></table></div><br>Management<br><ul><li>PDs are often thought to be 'untreatable' by definition</li><li>however, a number of approaches have been shown to help patients, including:<ul><li>psychological therapies: <span class="concept" data-cid="10705">dialectical behaviour therapy</span></li></ul></li></ul></div>
<div id="notecontent">Perthes' disease is a degenerative condition affecting the hip joints of children, typically between the ages of 4-8 years. It is due to avascular necrosis of the femoral head, specifically the femoral epiphysis. Impaired blood supply to the femoral head causes bone infarction. <br><br>Perthes' disease is 5 times more common in boys. Around 10% of cases are bilateral<br><br>Features<br><ul><li>hip pain: develops progressively over a few weeks</li><li>limp</li><li>stiffness and reduced range of hip movement</li><li>x-ray: early changes include widening of joint space, later changes include decreased femoral head size/flattening</li></ul><br>Diagnosis<br><ul><li>plain x-ray</li><li>technetium bone scan or magnetic resonance imaging if normal x-ray and symptoms persist</li></ul><br>Complications<br><ul><li>osteoarthritis</li><li>premature fusion of the growth plates</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb089b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb089.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb089b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Perthes' disease - both femoral epiphyses show extensive destruction, the acetabula are deformed</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb090b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb090.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb090b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Perthes' disease - bilateral disease</div><br>Catterall staging<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Stage</b></th><th><b>Features</b></th></tr></thead><tbody><tr><td>Stage 1</td><td>Clinical and histological features only</td></tr><tr><td>Stage 2</td><td>Sclerosis with or without cystic changes and preservation of the articular surface</td></tr><tr><td>Stage 3</td><td>Loss of structural integrity of the femoral head</td></tr><tr><td>Stage 4</td><td>Loss of acetabular integrity</td></tr></tbody></table></div><br>Management<br><ul><li>To keep the femoral head within the acetabulum: cast, braces</li><li>If less than 6 years: observation</li><li>Older: surgical management with moderate results</li><li>Operate on severe deformities</li></ul><br>Prognosis<br><ul><li>Most cases will resolve with conservative management. Early diagnosis improves outcomes.</li></ul></div>
Peutz-Jeghers syndrome is an autosomal dominant condition characterised by numerous hamartomatous polyps in the gastrointestinal tract. It is also associated with pigmented freckles on the lips, face, palms and soles. Although the polyps themselves don't have malignant potential, around 50% of patients will have died from another gastrointestinal tract cancer by the age of 60 years.
Genetics
* autosomal dominant
* responsible gene encodes serine threonine kinase LKB1 or STK11
Features
* hamartomatous polyps in GI tract (mainly small bowel)
* pigmented lesions on lips, oral mucosa, face, palms and soles
* intestinal obstruction e.g. intussusception
* gastrointestinal bleeding
Management
* conservative unless complications develop
---
;DDs for Oral Lesions
* PeuTz
* McCune
* AddiSon
!!Pulmonary function tests
can be used to determine whether a respiratory disease is obstructive or restrictive. The table below summarises the main findings and gives some example conditions:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Obstructive lung disease</b></th><th><b>Restrictive lung disease</b></th></tr></thead><tbody><tr><td>FEV1 - significantly reduced<br>FVC - reduced or normal <br>FEV1% (FEV1/FVC) - reduced</td><td>FEV1 - reduced<br>FVC - significantly reduced<br>FEV1% (FEV1/FVC) - normal or increased</td></tr><tr><td>Asthma<br><span class="concept" data-cid="5136">COPD</span><br>Bronchiectasis<br>Bronchiolitis obliterans</td><td><span class="concept" data-cid="1500">Pulmonary fibrosis</span><br><span class="concept" data-cid="8664">Asbestosis</span><br>Sarcoidosis<br>Acute respiratory distress syndrome<br>Infant respiratory distress syndrome<br>Kyphoscoliosis e.g. <span class="concept" data-cid="9607">ankylosing spondylitis</span><br>Neuromuscular disorders<br><span class="concept" data-cid="9829">Severe obesity</span></td></tr></tbody></table></div>
<div id="body_content">
Phenylketonuria (PKU) is an autosomal recessive condition caused by a disorder of phenylalanine metabolism. This is usually due to defect in phenylalanine hydroxylase, an enzyme which converts phenylalanine to tyrosine. In a small number of cases the underlying defect is a deficiency of the tetrahydrobiopterin-deficient cofactor, e.g. secondary to defective dihydrobiopterin reductase. High levels of phenylalanine lead to problems such as learning difficulties and seizures. The gene for phenylalanine hydroxylase is located on chromosome 12. The incidence of PKU is around 1 in 10,000 live births.<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd505b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd505.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd505b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Features<br><ul><li>usually presents by 6 months e.g. with developmental delay</li><li>child classically has fair hair and blue eyes</li><li>learning difficulties</li><li>seizures, typically infantile spasms</li><li>eczema</li><li><span class="concept" data-cid="10348">'musty' odour to urine and sweat</span>*</li></ul><br>Diagnosis<br><ul><li>Guthrie test: the 'heel-prick' test done at 5-9 days of life - also looks for other biochemical disorders such as hypothyroidism</li><li>hyperphenylalaninaemia</li><li>phenylpyruvic acid in urine</li></ul><br>Management<br><ul><li>poor evidence base to suggest strict diet prevents learning disabilities</li><li>dietary restrictions are however important during pregnancy as genetically normal fetuses may be affected by high maternal phenylalanine levels</li></ul><br>*secondary to phenylacetate, a phenylketone</div>
Phenytoin is used in the management of seizures.
Mechanism of action
*binds to sodium channels increasing their refractory period
''Adverse effects''
Phenytoin is associated with a large number of adverse effects. These may be divided into acute, chronic, idiosyncratic and teratogenic. Phenytoin is also an inducer of the P450 system.
Acute
* initially: dizziness, diplopia, nystagmus, slurred speech, ataxia
* later: confusion, seizures
Chronic
* common: gingival hyperplasia (secondary to increased expression of platelet derived growth factor, PDGF), hirsutism, coarsening of facial features, drowsiness
* megaloblastic anaemia (secondary to altered folate metabolism)
* peripheral neuropathy
* enhanced vitamin D metabolism causing osteomalacia
* lymphadenopathy
* dyskinesia
Idiosyncratic
* fever
* rashes, including severe reactions such as toxic epidermal necrolysis
* hepatitis
* Dupuytren's contracture*
* aplastic anaemia
* drug-induced lupus
Teratogenic
*associated with cleft palate and congenital heart disease
''Monitoring''
Phenytoin levels do not need to be monitored routinely but ''trough levels, immediately before dose'' should be checked if:
* adjustment of phenytoin dose
* suspected toxicity
* detection of non-adherence to the prescribed medication
*although not listed in the BNF
---
>PHENY is FUNNY BEHAVIOUR - ACUTE FENNY(Alcohol) drunk behaviour
*dizziness, diplopia, nystagmus, slurred speech, ataxia, confusion, seizures
---
>PHENY is FUNNY FACE
*Gums-Hirsutism-Coarse Face
---
> EpiLepsyRx blasts Marrow
*PhenyToin: AplasticAnemia
*ValProate: ThromboCytopenia
*CarbamaZapine: Leucopenia - AgranuloCytosis
---
!!Phaeochromocytoma
is a rare catecholamine secreting tumour. About 10% are familial and may be associated with MEN type II, neurofibromatosis and von Hippel-Lindau syndrome
!!!Basics
* bilateral in 10%
* malignant in 10%
* extra-adrenal in 10% (most common site = organ of Zuckerkandl, adjacent to the bifurcation of the aorta)
!!!Features are typically episodic
* hypertension (around 90% of cases, may be sustained)
* headaches
* palpitations
* tight chest
* sweating
* anxiety
* paraesthesia
* 30% have glycosuria during an attack
!!!Tests
* 24 hr urinary collection of metanephrines (sensitivity 97%*)
* this has replaced a 24 hr urinary collection of catecholamines (sensitivity 86%)
!!!Surgery is the definitive management. The patient must first however be stabilized with medical management:
* alpha-blocker (e.g. phenoxybenzamine), given before a
* beta-blocker (e.g. propranolol)
<div id="notecontent">Pelvic inflammatory disease (PID) is a term used to describe infection and inflammation of the female pelvic organs including the uterus, fallopian tubes, ovaries and the surrounding peritoneum. It is usually the result of ascending infection from the endocervix.<br><br>Causative organisms<br><ul><li><span class="concept" data-cid="10593"><i>Chlamydia trachomatis</i></span></li></ul> +<span class="concept" data-cid="10593"> the most common cause</span><br><ul><li><i>Neisseria gonorrhoeae</i></li><li><i>Mycoplasma genitalium</i></li><li><i>Mycoplasma hominis</i></li></ul><br><span id="concept_popover_id_3309" class="concept concept-0 trigger-link" data-cid="3309" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3309'>You've never been tested on this concept</div><br><div id='div_concept_rating3309' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(122,255,0)'>Importance: <b>76</b></span> </div>" data-original-title="Pelvic inflammatory disease: usually characterised by bilateral lower abdominal pain associated with vaginal discharge and high fever">Features</span><br><ul><li>lower abdominal pain</li><li>fever</li><li>deep dyspareunia</li><li>dysuria and menstrual irregularities may occur</li><li>vaginal or cervical discharge</li><li>cervical excitation</li></ul><br>Investigation<br><ul><li>a pregnancy test should be done to exclude an ectopic pregnancy</li><li>high vaginal swab<ul><li><span class="concept" data-cid="10489">these are often negative</span></li></ul></li><li>screen for Chlamydia and Gonorrhoea</li></ul><br>Management<br><ul><li>due to the difficulty in making an accurate diagnosis, and the potential complications of untreated PID, consensus guidelines recommend having a low threshold for treatment</li><li><span class="concept" data-cid="1711">oral ofloxacin + oral metronidazole or intramuscular ceftriaxone + oral doxycycline + oral metronidazole</span></li><li>RCOG guidelines suggest that in mild cases of PID intrauterine contraceptive devices may be left in. The more recent BASHH guidelines suggest that the evidence is limited but that <i>' Removal of the IUD should be considered and may be associated with better short term clinical outcomes'</i></li></ul><br>Complications<br><ul><li>perihepatitis (Fitz-Hugh Curtis Syndrome)<ul><li>occurs in around 10% of cases</li><li>it is characterised by right upper quadrant pain and may be confused with cholecystitis</li></ul></li><li>infertility - the risk may be as high as 10-20% after a single episode</li><li>chronic pelvic pain</li><li>ectopic pregnancy</li></ul></div>
---
!!!<center>''PELVIC INFLAMMATORY DISEASE''</center>
<hr>
* Mild/Mod: IP: Cefotetan 2 g IV Q12H PLUS Doxy 100 PO BD 14d OR Pen allergy Clinda 600-900 mg IV Q8H PLUS Gent; OP: Moxiflox 400 mg OD ± Metro 400 BD for 14 days OR Doxy 200 mg Q12H 3ds, then 100 mg Q12H 11 ds
* Severe: Pip/taz 3.375 g IV Q6H PLUS Doxy 100 mg PO BD for 14 days OR Moxiflox 400 mg IV Q24H PLUS Metro 500 mg IV Q8H for 14 days OR Moxiflox 400 OD OR Augmentin 875/125 BD OR Clinda 300 TDS + Levoflox 500 OD/Moxiflox 400 OD
!!Pityriasis rosea
describes an acute, self-limiting rash which tends to affect young adults. The aetiology is not fully understood but is thought that <span class="concept" data-cid="9388">herpes hominis virus 7 (HHV-7)</span> may play a role.<br><br>Features<br><ul><li>in the majority of patients there is no prodrome, but <span class="concept" data-cid="1991">a minority may give a history of a recent viral infection</span></li><li><span class="concept" data-cid="1990">herald patch</span> (usually on trunk)</li><li>followed by erythematous, oval, scaly patches which follow a characteristic distribution with the longitudinal diameters of the oval lesions running parallel to the line of Langer. This may produce a 'fir-tree' appearance</li></ul><br>Management<br><ul><li>self-limitingm - usually disappears after <span class="concept" data-cid="1989">6-12 weeks</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd113b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd113.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd113b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">On the left a typical herald patch is seen. After a few days a more generalised 'fir-tree' rash appears</div><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img002.jpg"></td></tr><tr><td valign="top" align="left"></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx114.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx156.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><b>Differentiating guttate psoriasis and pityriasis rosea</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th>Guttate psoriasis</th><th>Pityriasis rosea</th></tr></thead><tbody><tr><td><b>Prodrome</b></td><td>Classically preceded by a streptococcal sore throat 2-4 weeks</td><td>Many patients report recent respiratory tract infections but this is not common in questions</td></tr><tr><td><b>Appearance</b></td><td>'Tear drop', scaly papules on the trunk and limbs</td><td>Herald patch followed 1-2 weeks later by multiple erythematous, slightly raised oval lesions with a fine scale confined to the outer aspects of the lesions. <br><br>May follow a characteristic distribution with the longitudinal diameters of the oval lesions running parallel to the line of Langer. This may produce a 'fir-tree' appearance</td></tr><tr><td><b>Treatment / <br>natural history </b></td><td>Most cases resolve spontaneously within 2-3 months<br>Topical agents as per psoriasis<br>UVB phototherapy</td><td>Self-limiting, resolves after around 6 weeks</td></tr></tbody></table></div>
---
>GUT Vs. PIT
*DDs: GuTTate & PiTyriasis
<div id="notecontent">Pityriasis versicolor, also called tinea versicolor, is a superficial cutaneous fungal infection caused by <span class="concept" data-cid="8339"><i>Malassezia furfur</i></span> (formerly termed <i>Pityrosporum ovale</i>)<br><br>Features<br><ul><li>most commonly affects trunk</li><li>patches may be hypopigmented, pink or brown (hence versicolor). May be more noticeable following a suntan</li><li>scale is common</li><li>mild pruritus</li></ul><br>Predisposing factors<br><ul><li>occurs in healthy individuals</li><li>immunosuppression</li><li>malnutrition</li><li>Cushing's</li></ul><br>Management<br><ul><li>topical antifungal. NICE Clinical Knowledge Summaries advise <span class="concept" data-cid="8338">ketoconazole shampoo</span> as this is more cost effective for large areas</li><li>if failure to respond to topical treatment then consider alternative diagnoses (e.g. send scrapings to confirm the diagnosis) + oral itraconazole</li></ul></div>
<div id="notecontent">The British Thoracic Society (BTS) produced guidelines in 2010 covering the investigation of patients with a pleural effusion.<br><br>Imaging<br><ul><li>posterioranterior (PA) chest x-rays should be performed in all patients</li><li>ultrasound is recommended: it increases the likelihood of successful pleural aspiration and is sensitive for detecting pleural fluid septations</li><li>contrast CT is now increasingly performed to investigate the underlying cause, particularly for exudative effusions</li></ul><br>Pleural aspiration<br><ul><li>as above, ultrasound is recommended to reduce the complication rate</li><li>a 21G needle and 50ml syringe should be used</li><li>fluid should be sent for pH, protein, lactate dehydrogenase (LDH), cytology and microbiology</li></ul><br><b>Light's criteria</b> was developed in 1972 to help distinguish between a transudate and an exudate. The BTS recommend using the criteria for borderline cases:<br><ul><li>exudates have a protein level of >30 g/L, transudates have a protein level of <30 g/L</li><li>if the protein level is between 25-35 g/L, Light's criteria should be applied. An exudate is likely if at least one of the following criteria are met:<ul><li><span class="concept" data-cid="7859">pleural fluid protein divided by serum protein >0.5</span></li><li>pleural fluid LDH divided by serum LDH >0.6</li><li><span id="concept_popover_id_2597" class="concept concept-0 trigger-link" data-cid="2597" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2597'>You've never been tested on this concept</div><br><div id='div_concept_rating2597' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(214,255,0)'>Importance: <b>58</b></span> </div>" data-original-title="Light's criteria: Effusion LDH level greater than 2/3rds the upper limit of serum LDH points to exudate">pleural fluid LDH more than two-thirds the upper limits of normal serum LDH</span></li></ul></li></ul><br>Other characteristic pleural fluid findings:<br><ul><li>low glucose: rheumatoid arthritis, tuberculosis</li><li>raised amylase: pancreatitis, <span class="concept" data-cid="8317">oesophageal perforation</span></li><li>heavy blood staining: mesothelioma, pulmonary embolism, tuberculosis</li></ul><br><br><b>Pleural infection</b><br> <br>All patients with a pleural effusion in association with sepsis or a pneumonic illness require diagnostic pleural fluid sampling<br><ul><li>if the fluid is purulent or turbid/cloudy a chest tube should be placed to allow drainage</li><li>if the fluid is clear but the <b>pH is less than 7.2 in patients with suspected pleural infection a chest tube should be placed</b></li></ul><br><br><b>Management of recurrent pleural effusion</b><br><br>Options for managing patients with recurrent pleural effusions include:<br><ul><li>recurrent aspiration</li><li>pleurodesis</li><li>indwelling pleural catheter</li><li>drug management to alleviate symptoms e.g. opioids to relieve dyspnoea</li></ul></div>
<div id="notecontent">The British Thoracic Society (BTS) produced guidelines in 2010 covering the investigation of patients with a pleural effusion.<br><br>Imaging<br><ul><li>posterioranterior (PA) chest x-rays should be performed in all patients</li><li>ultrasound is recommended: it increases the likelihood of successful pleural aspiration and is sensitive for detecting pleural fluid septations</li><li>contrast CT is now increasingly performed to investigate the underlying cause, particularly for exudative effusions</li></ul><br>Pleural aspiration<br><ul><li>as above, ultrasound is recommended to reduce the complication rate</li><li>a 21G needle and 50ml syringe should be used</li><li>fluid should be sent for pH, protein, lactate dehydrogenase (LDH), cytology and microbiology</li></ul><br><b>Light's criteria</b> was developed in 1972 to help distinguish between a transudate and an exudate. The BTS recommend using the criteria for borderline cases:<br><ul><li>exudates have a protein level of >30 g/L, transudates have a protein level of <30 g/L</li><li>if the protein level is between 25-35 g/L, Light's criteria should be applied. An exudate is likely if at least one of the following criteria are met:<ul><li><span class="concept" data-cid="7859">pleural fluid protein divided by serum protein >0.5</span></li><li>pleural fluid LDH divided by serum LDH >0.6</li><li><span id="concept_popover_id_2597" class="concept concept-0 trigger-link" data-cid="2597" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2597'>You've never been tested on this concept</div><br><div id='div_concept_rating2597' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(214,255,0)'>Importance: <b>58</b></span> </div>" data-original-title="Light's criteria: Effusion LDH level greater than 2/3rds the upper limit of serum LDH points to exudate">pleural fluid LDH more than two-thirds the upper limits of normal serum LDH</span></li></ul></li></ul><br>Other characteristic pleural fluid findings:<br><ul><li>low glucose: rheumatoid arthritis, tuberculosis</li><li>raised amylase: pancreatitis, <span class="concept" data-cid="8317">oesophageal perforation</span></li><li>heavy blood staining: mesothelioma, pulmonary embolism, tuberculosis</li></ul><br><br><b>Pleural infection</b><br> <br>All patients with a pleural effusion in association with sepsis or a pneumonic illness require diagnostic pleural fluid sampling<br><ul><li>if the fluid is purulent or turbid/cloudy a chest tube should be placed to allow drainage</li><li>if the fluid is clear but the <b>pH is less than 7.2 in patients with suspected pleural infection a chest tube should be placed</b></li></ul><br><br><b>Management of recurrent pleural effusion</b><br><br>Options for managing patients with recurrent pleural effusions include:<br><ul><li>recurrent aspiration</li><li>pleurodesis</li><li>indwelling pleural catheter</li><li>drug management to alleviate symptoms e.g. opioids to relieve dyspnoea</li></ul></div>
<div id="notecontent">Polymyalgia rheumatica (PMR) is a relatively common condition seen in older people characterised by muscle stiffness and raised inflammatory markers. Whilst it appears to be closely related to temporal arteritis the underlying cause is not fully understood and it does not appear to be a vasculitic process.<br><br><span class="concept" data-cid="1231">Features</span><br><ul><li>typically patient > 60 years old</li><li>usually rapid onset (e.g. < 1 month)</li><li>aching, morning stiffness in proximal limb muscles<ul><li><span class="concept" data-cid="3782">weakness is not considered a symptom of polymyalgia rheumatica</span></li></ul></li><li>also mild polyarthralgia, lethargy, depression, low-grade fever, anorexia, night sweats</li></ul><br>Investigations<br><ul><li>raised inflammatory markers e.g. ESR > 40 mm/hr</li><li>note <span class="concept" data-cid="10866">creatine kinase</span> and EMG normal</li></ul><br>Treatment<br><ul><li>prednisolone e.g. 15mg/od<ul><li><span class="concept" data-cid="10867">patients typically respond dramatically to steroids, failure to do so should prompt consideration of an alternative diagnosis</span></li></ul></li></ul></div>
!!Pneumonia
is one of the most common presentations encountered in clinical practice. Strictly speaking it describes any inflammatory condition affecting the alveoli of the lungs, but in the vast majority of patients this is secondary to a bacterial infection.
;Causes
As mentioned before, ''bacterial pneumonia is by far the most common type of pneumonia'' seen in clinical practice. Other infective causes include:
* viral
* fungal (e.g. Pneumocystis jiroveci)
The table below shows some of the organisms which can cause pneumonia
|!Organism|!Notes|
|Streptococcus pneumoniae (pneumococcus)|Accounts for 80% of cases<br>Particularly associated with high fever, rapid onset and herpes labialis<br>A vaccine to pneumococcus is available|
|Haemophilus influenzae|Particularly common in patients with COPD|
|Staphylococcus aureus|Often occurs in patient following influenza infection|
|Mycoplasma pneumoniae|One of the atypical pneumonias, which often present a dry cough and atypical chest signs/x-ray findings<br>Autoimmune haemolytic anaemia and erythema multiforme may be seen|
|Legionella pneumophilia|Another one of the atypical pneumonias<br>Hyponatraemia and lymphopenia common<br>Classically seen secondary to infected air conditioning units|
|Klebsiella pneumoniae|Classically seen in alcoholics|
|Pneumocystis jiroveci|Typically seen in patients with HIV<br>Presents with a dry cough, exercise-induced desaturations and the absence of chest signs|
Idiopathic interstitial pneumonia is a group of non-infective causes of pneumonia. Examples include cryptogenic organizing pneumonia which describes a form of bronchiolitis which may develop as a complication of rheumatoid arthritis or amiodarone therapy.
;Community vs. hospital-acquired pneumonia
The majority of patients develop pneumonia within the community, i.e. outside of hospital and these patients are said to have community-acquired pneumonia [[CAP]]. Patients who develop pneumonia within hospitals are said to have hospital-acquired pneumonia. The distinction is important as the causative organisms vary and hence first-line antibiotic guidelines are also different.
;Symptoms
* cough
* sputum
* dyspnoea
* chest pain: may be pleuritic
* fever
;Signs
* signs of systemic inflammatory response: fever, tachycardia
* reduced oxygen saturations
* ausculatation: reduced breath sounds, bronchial breathing
;Investigations
Chest x-ray
* the classical x-ray finding in pneumonia is consolidation
<center><img src="https://www.dropbox.com/s/bbw3mm2xb23yrv6/pneumonia1.jpg?raw=1" width="400"></center>
This film demonstrates classical signs of right upper lobe consolidation - abnormal opacity within the right upper lobe abutting the horizontal fissure. Note how the 'position' of the consolidation on the film (i.e. in the 'middle' of the lung) doesn't necessarily correlate with the lobe affected
<center><img src="https://www.dropbox.com/s/0awbeye4wojd305/pneumonia2.jpg?raw=1" width="400"></center>
Here the consolidation is harder to spot. Look at the left heart border - it is normally well dermaracted with the lung. Here it is fuzzy - this is a classic sign of left lingula consolidation.
;Bloods
* full blood count: would usually show a neutrophilia in bacterial infections
* urea and electrolytes: check for dehydration (remember the 'U' for urea in CURB-65, see below) and also other changes seen with some atypical pneumonias
* CRP: raised in response to infection
;Arterial blood gases
*indicated if the oxygen saturations or low or the patient has pre-existing respiratory disease, for example COPD
;Management
Patients with pneumonia require the following:
* antibiotics: to treat the underlying infection
* supportive care: for example oxygen therapy if the patients is hypoxaemic, intravenous fluids if the patient is hypotensive or shows signs of dehydration
The management of patients with community-acquired pneumonia is usually determined according to a risk stratification process using a scoring system called CURB-65.
The CURB-65 score is as follows:
|!Criterion|!Marker|
|!C|Confusion (abbreviated mental test score <= 8/10)|
|!U|Urea >7 mmol/L|
|!R|Respiration rate >= 30/min|
|!B|Blood pressure: systolic <= 90 mmHg and/or diastolic <= 60 mmHg|
|!65|Aged >= 65 years|
Patients with a CURB-65 score of 0 should be managed in the community.
Patients with a CURB-65 score of 1 should have their Sa02 assessed which should be >92% to be safely managed in the community and a CXR performed. If the CXR shows bilateral/multilobar shadowing hospital admission is advised.
Patients with a CURB-65 score of 2 or more should be managed in hospital as this represents a severe community acquired pneumonia.
The CURB-65 score also correlates with an increased risk of mortality at 30 days with patients with a CURB-65 score of 4 approaching a 30% mortality rate at 30 days.
!!!<center>''PNEUMONIA PROTOCOL''</center>
<hr>
* Community-Acquired PNA (CAP): Occurs out of hosp or w/i 48 h of admx; no HCAP factors
* Healthcare-Associated PNA (HCAP): a/w hosp admx (2+ d) w/i last 90 d; residence in long-term care or nursing home; immunosuppression; family member w/ MDR organism; or any of the following w/i 30 d: IV abx, HD, home wound care
* Hospital- / Vent-Acquired PNA (HAP/VAP): Occurs >48 h after hosp admx or intubation
* CXR, CBC, KFT, ABG, sputum gm stain, AFB, cultures, Influenza
* IVF if NPO
* Inj. Ceftriaxone 1 g IV q12h
* Inj. Amox-clav 1.2 g IV q8h
* Tab Azithromycin 500 mg (IV/PO) OD
* Inj Pip-taz 4.5 IV q8h
* Inj Amikacin 15-20 mg/kg IV OD
* Oseltamivir (75 mg PO BID × 7 d)
* ATT if TB
* Oxygen to keep O2 sats 90-92%
* Consider BIPAP if:pH between 7.35 and 7.25, PaCO2 > 45 & < 60 mmHg, RR between 24 -35.
* ''Pleural effusion:''
* Pleural tap USG guided
* Chest tube if Empyema
* ATT if TB
* ''Hemoptysis'':
* CXR and routine labs, PT/INR
* Sputum AFB and CBNAT
* CECT chest if needed
* Pneumonia treatment
* ABC management
* Fluid resuscitation
* Inj Tranexa 500 iv q8h
* Bronchoscopy if needed
|>|!CURB-65 Score|
|1 pt each|''C''onfusion, ''U''rea >20mg/dL, ''R''R >30, S''B''P <90, DBP < 60, age > ''65''|
|> 2|Consider Outpatient Rx|
|= 2|Short Inpatient Hospitalization or <br>Close Outpatient Supervision|
|< 2|Hospitalize, Consider ICU|
!!!<center>''PNEUMONIA''</center>
<hr>
* ''Community acquired:''
* ''Inpatient:'' Ceftriaxone 1 g IV Q24H PLUS Azithromycin 500 mg IV/PO once daily 1-2 wks OR Moxifloxacin 400 mg IV/PO Q24H; ''Oral:'' Azithro 500 OD 3d OR Amox 500 TDS OR Cefpodox 200 BD OR Augmentin 875 BD OR Levoflox 750/Moxiflox 400 OD 1-2 wks OR Doxy 200 mg Q12H 3ds, then 100 mg Q12H 11 ds;
* ''Patient ICU:'' Ceftriaxone 1 g IV Q24H PLUS Azithromycin 500 mg IV Q24H OR Moxifloxacin 400 mg IV Q24H; ''Pseudomonas:'' Pip/taz 4.5 g IV Q6H PLUS Azithro 500 mg IV Q24H OR Cefepime 1 g IV Q8H PLUS Azithro 500 mg IV Q24H OR Moxifloxacin 400 mg IV Q24H PLUS Aztreonam 2 g IV Q8H; ''Suspected aspiration:'' Add Clinda 600 IV q8h; ''Hospital acquired:'' Ceftriaxone 1 g IV Q24H(mil-mod); ''Severe:'' Pip/taz 4.5 g IV Q6H
<div id="notecontent"><b>Primary care setting</b><br><br>NICE recommends that patients should initially be assessed in primary care using the CRB65 criteria:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th> <br>Criterion</th><th>Marker</th></tr></thead><tbody><tr><td>C</td><td>Confusion (abbreviated mental test score <= 8/10)</td></tr><tr><td>R</td><td>Respiration rate >= 30/min</td></tr><tr><td>B</td><td>Blood pressure: systolic <= 90 mmHg and/or diastolic <= 60 mmHg</td></tr><tr><td>65</td><td>Aged >= 65 years</td></tr></tbody></table></div><br>Patients are stratified for risk of death as follows:<br><ul><li>0: low risk (less than 1% mortality risk)</li><li>1 or 2: intermediate risk (1-10% mortality risk)</li><li>3 or 4: high risk (more than 10% mortality risk).</li></ul><br>NICE recommend, in conjunction with clinical judgement:<br><ul><li>home-based care for patients with a CRB65 score of 0</li><li>hospital assessment for all other patients, particularly those with a CRB65 score of 2 or more.</li></ul><br>NICE also mention point-of-care CRP test. This is currently not widely available but they make the following recommendation with reference to the use of antibiotic therapy:<br><ul><li>CRP < 20 mg/L - do not routinely offer antibiotic therapy</li><li>CRP 20 - 100 mg/L - consider a delayed antibiotic prescription</li><li>CRP > 100 mg/L - offer antibiotic therapy</li></ul><br><br><b>Secondary care setting</b><br><br>Note that in hospital, once blood tests are available the CURB65, rather than the CRB65, can be used. This adds an extra criterion of urea > 7 mmol/L:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th> <br>Criterion</th><th>Marker</th></tr></thead><tbody><tr><td>C</td><td>Confusion (abbreviated mental test score <= 8/10)</td></tr><tr><td>U</td><td>urea > 7 mmol/L</td></tr><tr><td>R</td><td>Respiration rate >= 30/min</td></tr><tr><td>B</td><td>Blood pressure: systolic <= 90 mmHg and/or diastolic <= 60 mmHg</td></tr><tr><td>65</td><td>Aged >= 65 years</td></tr></tbody></table></div><br>NICE recommend, in conjunction with clinical judgement:<br><ul><li>consider home-based care for patients with a CURB65 score of 0 or 1 - low risk (less than 3% mortality risk)</li><li>consider hospital-based care for patients with a CURB65 score of 2 or more - intermediate risk (3-15% mortality risk)</li><li>consider intensive care assessment for patients with a CURB65 score of 3 or more - high risk (more than 15% mortality risk)</li></ul><br>Investigations<br><ul><li>chest x-ray</li><li>in intermediate or high-risk patients NICE recommend blood and sputum cultures, pneumococcal and legionella urinary antigen tests</li><li>CRP monitoring is recommend for admitted patients to help determine response to treatment</li></ul><br>Management of low-severity community acquired pneumonia<br><ul><li><span class="concept" data-cid="6113">amoxicillin is first-line</span></li><li>if penicillin allergic then use a macrolide or tetracycline</li><li>NICE now recommend a 5 day course of antibiotics for patients with low severity community acquired pneumonia</li></ul><br>Management of moderate and high-severity community acquired pneumonia<br><ul><li>dual antibiotic therapy is recommended with amoxicillin and a macrolide</li><li>a 7-10 day course is recommended</li><li>NICE recommend considering a beta-lactamase stable penicillin such as co-amoxiclav, ceftriaxone or piperacillin with tazobactam and a macrolide in high-severity community acquired pneumonia</li></ul><br><br><b>Discharge criteria and advice post-discharge</b><br><br>NICE recommend that patients are not routinely discharged if in the past 24 hours they have had 2 or more of the following findings:<br><ul><li>temperature higher than 37.5°C</li><li>respiratory rate 24 breaths per minute or more</li><li>heart rate over 100 beats per minute</li><li>systolic blood pressure 90 mmHg or less</li><li>oxygen saturation under 90% on room air</li><li>abnormal mental status</li><li>inability to eat without assistance.</li></ul><br>They also recommend delaying discharge if the temperature is higher than 37.5°C.<br><br>NICE recommend that the following information is given to patients with pneumonia in terms of how quickly their symptoms should symptoms should resolve:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th>Time</th><th>Progress</th></tr></thead><tbody><tr><td>1 week</td><td>Fever should have resolved</td></tr><tr><td>4 weeks</td><td>Chest pain and sputum production should have substantially reduced</td></tr><tr><td>6 weeks</td><td>Cough and breathlessness should have substantially reduced</td></tr><tr><td>3 months</td><td>Most symptoms should have resolved but fatigue may still be present</td></tr><tr><td>6 months</td><td>Most people will feel back to normal.</td></tr></tbody></table></div></div>
<div id="body_content">
Paroxysmal nocturnal haemoglobinuria (PNH) is an acquired disorder leading to haemolysis (mainly intravascular) of haematological cells. It is thought to be caused by increased sensitivity of cell membranes to complement (see below) due to a lack of glycoprotein glycosyl-phosphatidylinositol (GPI). Patients are more prone to venous thrombosis<br><br>Pathophysiology<br><ul><li>GPI can be thought of as an anchor which attaches surface proteins to the cell membrane</li><li>complement-regulating surface proteins, e.g. decay-accelerating factor (DAF), are not properly bound to the cell membrane due a lack of GPI </li><li>thrombosis is thought to be caused by a lack of CD59 on platelet membranes predisposing to platelet aggregation</li></ul><br>Features<br><ul><li>haemolytic anaemia</li><li>red blood cells, white blood cells, platelets or stem cells may be affected therefore pancytopaenia may be present</li><li>haemoglobinuria: classically dark-coloured urine in the morning (although has been shown to occur throughout the day)</li><li>thrombosis e.g. Budd-Chiari syndrome</li><li>aplastic anaemia may develop in some patients</li></ul><br>Diagnosis<br><ul><li>flow cytometry of blood to detect low levels of CD59 and CD55 has now replaced Ham's test as the gold standard investigation in PNH</li><li>Ham's test: acid-induced haemolysis (normal red cells would not)</li></ul><br>Management<br><ul><li>blood product replacement</li><li>anticoagulation</li><li>eculizumab, a monoclonal antibody directed against terminal protein C5, is currently being trialled and is showing promise in reducing intravascular haemolysis</li><li>stem cell transplantation</li></ul></div>
!!!<center>''POISONING''</center>
<hr>
# ABCs, resuscitate/stabilize
# Decontaminate (GI tract, skin, eyes)/enhance elimination (charcoal, dialysis)
# Treat w/antidote, if available & indicated
* Call NPIC, AIIMS New Delhi; Toll Free No. - 1800 116 117,or Tel No.- 26589391 , 26593677
* ECG, RBS, CBC, KFT, LFTs, UA, ABG, hCG, Drug levels
* ''GI Decontamination:''
* ''Activated charcoal:'' Given ideally w/i 1 h from ingestion, 50 g (adults), 25 g (children); Give w/ antiemetics. CI: Concern for bowel perforation, obstruction, aspiration, acid/alkali ions, EtOH, lithium, iron poorly adsorbed, AMS
* Whole bowel irrigation if Significant ingestion not absorbed by charcoal or bags of illicit drugs; PEG via NGT 2 L/h (children 500 mL/h) until clear rectal effluent. CI: Low-risk ingestion, risk of aspiration, toxin absorbed by charcoal, ileus or obstruction, obtundation
''Organophosphate''
* SLUDGE: Salivation, lacrimation, urinary incontinence, defecation, GI distress, emesis. Other: Muscle weakness, paralysis,diaphoresis, bronchospasm, miosis, bronchorrhea, tachycardia, HTN, sz, respiratory depression, garlic like odor
* BMP, ECG, plasma cholinesterase level, lactate, CK, LFTs, CXR
* Decontamination; atropine (2–5 mg) IV q5min (endpoint = dried secretions); 2-PAM 1–2 g IV over 30–60 min, 500–1000 mg/h (will not work on skeletal muscle); BZD (prn szs/agitation)
''Chlorinated Hydrocarbons (DDT, chlordane, lindane)''
* Tremors, paresthesias, szs, AMS, muscle twitching, hyperthermia, arrhythmias, rhabdomyolysis, chemical pneumonitis
* Electrolytes (metabolic acidosis, ATN), ECG (arrhythmias), CK (rhabdomyolysis)
* Supportive, decontamination, activated charcoal, cholestyramine (do not use in bowel obstruction), BZD (prn sz/agitation), βB
''Iron''
* Any iron supplement, tox >20 mg/kg; <12 h: GI (emesis/diarrhea/abd pain; Severe: Bloody emesis/diarrhea, large fluid losses); 6–24 h: Latent phase w/o sxs; 24–72 h: Hepatorenal failure; 2–6 wk: Chronic GI strictures
* Fe level q4h; check KFT, LFTs, lactate, CBC, coags if symptomatic; KUB may show radiopaque tablets
* Decontamination & whole bowel irrigation; supportive/IVFs; deferoxamine 15 mg/kg/h (max 1 g/h) over 6 h (for severe sxs, may induce hypotension)
''Hydrocarbons/volatiles''
* Baby oil, mineral oil, furniture polish, paint thinner, petroleum jelly, solvents, gasoline, lamp oil kerosene, lighter fluid: Hydrocarbon odor, glue sniffer’s rash, chemical pneumonitis, aspiration, confusion, depression, szs, dysrhythmias, N/V, liver failure, burns, cerebellar dysfxn
* KFT (renal tubular acidosis, hypokalemia), ECG, LFTs (elevated); CXR (infiltrate, bronchovascular markings)
* Remove all exposed clothing; supportive care – if intubated, PEEP beneficial
''Herbicides''
* Paraquat, diquat, Roundup (glyphosate), Glufosinate, Atrazine, Mecoprop, Acetochlor, Dicamba, Pentachlorophenols, Chlorophenoxy, Nitrophenolic, Metolachlor: Dermatologic irritant, mediastinitis, peritonitis, N/V/D, liver failure, CV shock, coma, sz, muscle weakness, renal failure/tubular necrosis/myoglobinuria, rhabdomyolysis, pulmonary edema, pulmonary fibrosis (paraquat), ICH (diquat)
* KFT (tubular necrosis, hypernatremia), lipase, CK, urine myoglobin, ECG (dysrhythmias), LFTs, CXR
* Irrigate all areas of exposure (skin, eyes, gastric lavage), IVFs, electrolyte replacement, BZD (sz, agitation); activated charcoal
* Paraquat/Diquat/Glufosinate: Hemoperfusion
* Chlorophenoxy: Alkaline diuresis via 1–2 amps bicarb + KCl (urine output: 4–6 cc/kg/h)
* Pentachlorophenols/nitrophenolic: Aggressive cooling, treat hyperkalemia/rhabdomyolysis
''Rodenticides''
* Red squill: Cardiac glycoside-like sxs; Strychnine: Sz-like appearance w/ extensor posturing, rhabdomyolysis; Yellow phosphorous: Garlic odor, oral burns, vomiting, phosphorescent smelling feces, GIB, electrolyte abnl, sz, arrhythmias, renal/hepatic failure; Warfarin type/brodifacoum: Longacting anticoagulation, bleeding risk
* CXR, BMP, LFTs, EKG, CXR, CK, Urine hCG, PT/PTT, may check individual levels
* Decontaminate, activated charcoal, whole bowel irrigation, supportive, renal failure may require dialysis, exchange transfusion for severe hemolysis
''Household products''
* Acids (toilet bowel cleaners), bases (bleach, ammonia), detergents, all-purpose cleaners (glass cleaner, pine oil, turpentine), chlorine, cosmetics
* Bases/acids: GI irritation; Bases: Pneumonitis, pneumomediastinum; Perfume/mouthwash: Depends on alcohol level; Pine oil/turpentine: Hemorrhagic pulmonary edema; Detergents: GI irritants/corrosives, pulmonary edema; Glass cleaner: Ocular, o/w well tolerated
* KFT (hypernatremia w/bleach), CXR (aspiration PNA)
* Supportive: IVFs, intubation if necessary; copious irrigation of skin, eye Ingestion: Water, milk to reduce irritation; Pine oil/turpentine: GI decontamination, endoscopy
Polycythaemia vera (previously called polycythaemia rubra vera) is a myeloproliferative disorder caused by clonal proliferation of a marrow stem cell leading to an increase in red cell volume, often accompanied by overproduction of neutrophils and platelets. It has recently been established that a mutation in JAK2 is present in approximately 95% of patients with polycythaemia vera and this has resulted in significant changes to the diagnostic criteria. The incidence of polycythaemia vera peaks in the sixth decade.
Features
* hyperviscosity
* pruritus, typically after a hot bath
* splenomegaly
* haemorrhage (secondary to abnormal platelet function)
* plethoric appearance
* hypertension in a third of patients
* roughly 20% of patients will also suffer from gouty arthritis
* DVT due to increased viscosity
* low ESR
Following history and examination, the British Committee for Standards in Haematology (BCSH) recommend the following tests are performed
* full blood count/film (raised haematocrit; neutrophils, basophils, platelets raised in half of patients)
* JAK2 mutation
* serum ferritin
* renal and liver function tests
If the JAK2 mutation is negative and there is no obvious secondary causes the BCSH suggest the following tests:
* red cell mass
* arterial oxygen saturation
* abdominal ultrasound
* serum erythropoietin level
* bone marrow aspirate and trephine
* cytogenetic analysis
* erythroid burst-forming unit (BFU-E) culture
Other features that may be seen in PRV include a low ESR and a raised leukocyte alkaline phosphatase
The diagnostic criteria for polycythaemia vera have recently been updated by the BCSH. This replaces the previous polycythaemia vera Study Group criteria.
JAK2-positive polycythaemia vera - diagnosis requires both criteria to be present
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Criteria</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td>A1</td><td>High haematocrit (>0.52 in men, >0.48 in women) OR raised red cell mass (>25% above predicted)</td></tr><tr><td>A2</td><td>Mutation in JAK2</td></tr></tbody></table></div><br>JAK2-negative PRV - diagnosis requires A1 + A2 + A3 + either another A or two B criteria<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Criteria</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td>A1</td><td>Raised red cell mass (>25% above predicted) OR haematocrit >0.60 in men, >0.56 in women</td></tr><tr><td>A2</td><td>Absence of mutation in JAK2</td></tr><tr><td>A3</td><td>No cause of secondary erythrocytosis</td></tr><tr><td>A4</td><td>Palpable splenomegaly</td></tr><tr><td>A5</td><td>Presence of an acquired genetic abnormality (excluding BCR-ABL) in the haematopoietic cells</td></tr><tr><td>B1</td><td>Thrombocytosis (platelet count >450 * 10<sup>9</sup>/l)</td></tr><tr><td>B2</td><td>Neutrophil leucocytosis (neutrophil count > 10 * 10<sup>9</sup>/l in non-smokers; > 12.5*10<sup>9</sup>/l in smokers)</td></tr><tr><td>B3</td><td>Radiological evidence of splenomegaly</td></tr><tr><td>B4</td><td>Endogenous erythroid colonies or low serum erythropoietin</td></tr></tbody></table></div></div>
;Second generation
* norethisterone
* levonorgestrel
* ethynodiol diacetate
;Third generation
* desogestrel (Cerazette) (POP that acts like COCP)
;Cerazette
* new third generation type of progestogen only pill (POP) containing desogestrel
* inhibits ovulation in the majority of women
* users can take the pill up to 12 hours late rather than 3 hours like other POPs
---
!!Counselling
Women who are considering taking the progestogen only pill (POP) should be counselled in a number of areas:<br><br>Potential adverse effects<br><ul><li>irregular vaginal bleeding is the most common problem</li></ul><br>Starting the POP<br><ul><li>if commenced up to and including day 5 of the cycle it provides immediate protection, otherwise additional contraceptive methods (e.g. Condoms) should be used for the first 2 days</li><li>if switching from a combined oral contraceptive (COC) gives immediate protection if continued directly from the end of a pill packet (i.e. Day 21)</li></ul><br>Taking the POP<br><ul><li>should be taken at same time everyday, without a pill free break (unlike the COC)</li></ul><br>Missed pills<br><ul><li>if < 3 hours* late: continue as normal</li><li>if > 3 hours*: take missed pill as soon as possible, continue with rest of pack, extra precautions (e.g. Condoms) should be used until pill taking has been re-established for 48 hours</li></ul><br>Other potential problems<br><ul><li>diarrhoea and vomiting: continue taking POP but assume pills have been missed - see above</li><li>antibiotics: have no effect on the POP**</li><li>liver enzyme inducers may reduce effectiveness</li></ul><br>Other information<br><ul><li>discussion on STIs</li></ul><br>*for Cerazette (desogestrel) a 12 hour period is allowed<br><br>**unless the antibiotic alters the P450 enzyme system, for example rifampicin
---
>POP in Condom for 2 days if LATE start
---
<div id="notecontent">Post-partum mental health problems range from the 'baby-blues' to puerperal psychosis.<br><br>The <span id="concept_popover_id_5075" class="concept concept-1 trigger-link" data-cid="5075" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5075'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating5075' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(45,255,0)'>Importance: <b>91</b></span> </div>" data-original-title="The Edinburgh Scale is a screening tool for postnatal depression"><b>Edinburgh Postnatal Depression Scale</b></span> may be used to screen for depression:<br><ul><li>10-item questionnaire, with a maximum score of 30</li><li>indicates how the mother has felt over the previous week</li><li>score > 13 indicates a 'depressive illness of varying severity'</li><li>sensitivity and specificity > 90%</li><li>includes a question about self-harm</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>'Baby-blues'</b></th><th><b>Postnatal depression</b></th><th><b>Puerperal psychosis</b></th></tr></thead><tbody><tr><td>Seen in around 60-70% of women<br><br>Typically seen 3-7 days following birth and is more common in primips<br><br>Mothers are characteristically anxious, tearful and irritable</td><td>Affects around <span class="concept" data-cid="406">10%</span> of women<br><br>Most cases start within a month and typically peaks at 3 months<br><br>Features are similar to depression seen in other circumstances<br></td><td>Affects approximately 0.2% of women<br><br>Onset usually within the first 2-3 weeks following birth<br><br>Features include severe swings in mood (similar to bipolar disorder) and disordered perception (e.g. auditory hallucinations)</td></tr><tr><td>Reassurance and support, the health visitor has a key role</td><td>As with the baby blues reassurance and support are important<br><br>Cognitive behavioural therapy may be beneficial. Certain SSRIs such as <span class="concept" data-cid="10557">sertraline and paroxetine</span>* may be used if symptoms are severe** - whilst they are secreted in breast milk it is not thought to be harmful to the infant</td><td>Admission to hospital is usually required<br><br>There is around a <span class="concept" data-cid="10478">25-50%</span> risk of recurrence following future pregnancies</td></tr></tbody></table></div><br>*paroxetine is recommended by SIGN because of the low milk/plasma ratio<br>**fluoxetine is best avoided due to a long half-life</div>
<div id="notecontent">It is increasingly recognised that patients may develop complications following a DVT. Venous outflow obstruction and venous insufficiency result in chronic venous hypertension. The resulting clinical syndrome is known as post-thrombotic syndrome. The following features maybe seen:<br><ul><li>painful, heavy calves</li><li>pruritus</li><li>swelling</li><li>varicose veins</li><li>venous ulceration</li></ul><br>Compression stockings have in the past been offered to patients with deep vein thrombosis to help reduce the risk of post-thrombotic syndrome.<br><br>However, Clinical Knowledge Summaries now state the following:<br><br><div class="bs-callout bs-callout-default"><i><i><br>Do not offer elastic graduated compression stockings to prevent post-thrombotic syndrome or VTE recurrence after a proximal DVT. This recommendation does not cover the use of elastic stockings for the management of leg symptoms after DVT.<br></i></i></div><br>However, once post-thrombotic syndrome has developed compression stockings are a recommended treatment. Other recommendations including keeping the leg elevated.</div>
!!Vision Loss After Cataract Surgery
*Post operative posterior capsule thickening
** is a common complication following cataract surgery.
** The posterior capsule becomes opaque over a period of months after surgery.
** The presenting symptoms are very like that of a reoccurring cataract.
** Reoccurrence of cataract is rare following cataract surgery and would take more than 2 months to occur.
** Posterior capsule thickening is treated with capsulotomy and laser surgery.
*AnteriorUveitis
*Vitreous Hemorrhage
Postcoital bleeding describes vaginal bleeding after sexual intercourse.
Causes
no identifiable pathology is found in around 50% of cases
cervical ectropion is the most common identifiable causes, causing around 33% of cases. This is more common in women on the combined oral contraceptive pill
cervicitis e.g. secondary to Chlamydia
cervical cancer
polyps
trauma
!!Post-term pregnancy
<div id="notecontent">The World Health Organization defines a post-term pregnancy as one that has extended to or beyond 42 weeks.<br><br>Potential complications/consequences:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Neonatal</th><th>Maternal</th></tr></thead><tbody><tr><td>Reduced placental perfusion<br>Oligohydramnios</td><td>Increased rates of intervention including forceps and caesarean section<br>Increased rates of labour induction</td></tr></tbody></table></div></div>
`women with either pregnancy-induced hypertension or pre-eclampsia are usually delivered`
<div id="notecontent">Postpartum haemorrhage (PPH) is defined as blood loss of > 500mls and may be primary or secondary<br><br>Primary PPH<br><ul><li>occurs within 24 hours</li><li>affects around 5-7% of deliveries</li><li>most common cause of PPH is uterine atony (90% of cases). Other causes include genital trauma and clotting factors</li></ul><br>Risk factors for primary PPH include*:<br><ul><li>previous PPH</li><li>prolonged labour</li><li>pre-eclampsia</li><li>increased maternal age</li><li>polyhydramnios</li><li>emergency Caesarean section</li><li>placenta praevia, placenta accreta</li><li>macrosomia</li><li>ritodrine (a beta-2 adrenergic receptor agonist used for tocolysis)</li></ul><br>Management<br><ul><li>ABC including two peripheral cannulae, 14 gauge</li><li>IV syntocinon (oxytocin) 10 units or IV ergometrine 500 micrograms</li><li>IM carboprost</li><li>if medical options failure to control the bleeding then surgical options will need to be urgently considered</li><li>the RCOG state that the intrauterine balloon tamponade is an appropriate first-line ‘surgical’ intervention for most women where uterine atony is the only or main cause of haemorrhage</li><li>other options include: B-Lynch suture, ligation of the uterine arteries or internal iliac arteries</li><li>if severe, uncontrolled haemorrhage then a hysterectomy is sometimes performed as a life-saving procedure</li></ul><br>Secondary PPH<br><ul><li>occurs between 24 hours - 12 weeks**</li><li>due to retained placental tissue or endometritis</li></ul><br>*the effect of parity on the risk of PPH is complicated. It was previously though multiparity was a risk factor but more modern studies suggest nulliparity is actually a risk factor<br><br>**previously the definition of secondary PPH was 24 hours - 6 weeks. Please see the RCOG guidelines for more details</div>
---
In addition to the usual steps taken in an episode of PPH (including an ABC approach if the patient is unstable), the following management should be initiated in sequence:
* bimanual uterine compression to manually stimulate contraction
* intravenous oxytocin and/or ergometrine
* intramuscular carboprost
* intramyometrial carboprost
* rectal misoprostol
* surgical intervention such as balloon tamponade
---
Proton pump inhibitors (PPI) cause irreversible blockade of H+/K+ ATPase of the gastric parietal cell.
Examples include omeprazole and lansoprazole.
Adverse effects
* hyponatraemia, hypomagnasaemia
* osteoporosis → increased risk of fractures
* microscopic colitis
* increased risk of Clostridium difficile infections
<div id="notecontent">Prediabetes is a term which is increasingly used where there is impaired glucose levels which are above the normal range but not high enough for a diagnosis of diabetes mellitus. The term includes patients who have been labelled as having either impaired fasting glucose (IFG) or impaired glucose tolerance (IGT). Diabetes UK estimate that around 1 in 7 adults in the UK have prediabetes. Many individuals with prediabetes will progress on to developing type 2 diabetes mellitus (T2DM) and they are therefore at greater risk of microvascular and macrovascular complications.<br><br>Terminology<br><ul><li>Diabetes UK currently recommend using the term prediabetes when talking to patients and impaired glucose regulation when talking to other healthcare professionals</li><li>research has shown that the term 'prediabetes' has the most impact and is most easily understood</li></ul><br>Identification of patients with prediabetes<br><ul><li>NICE recommend using a validated computer based risk assessment tool for all adults aged 40 and over, people of South Asian and Chinese descent aged 25-39, and adults with conditions that increase the risk of type 2 diabetes</li><li>patients identified at high risk should have a blood sample taken</li><li>a fasting plasma glucose of 6.1-6.9 mmol/l or an HbA1c level of 42-47 mmol/mol (6.0-6.4%) indicates high risk</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd521b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd521.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd521b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Diagram showing the spectrum of diabetes diagnosis<br></div><br>Management<br><ul><li>lifestyle modification: weight loss, increased exercise, change in diet</li><li>at least yearly follow-up with blood tests is recommended</li><li>NICE recommend metformin for adults at high risk <i>'whose blood glucose measure (fasting plasma glucose or HbA1c) shows they are still progressing towards type 2 diabetes, despite their participation in an intensive lifestyle-change programme'</i></li></ul><br><b>Impaired fasting glucose and impaired glucose tolerance</b><br><br>There are two main types of IGR:<br><ul><li>impaired fasting glucose (IFG) - due to hepatic insulin resistance</li><li>impaired glucose tolerance (IGT) - due to muscle insulin resistance</li><li>patients with IGT are more likely to develop T2DM and cardiovascular disease than patients with IFG</li></ul><br>Definitions<br><ul><li>a fasting glucose greater than or equal to 6.1 but less than 7.0 mmol/l implies impaired fasting glucose (IFG)</li><li>impaired glucose tolerance (IGT) is defined as fasting plasma glucose less than 7.0 mmol/l and OGTT 2-hour value greater than or equal to 7.8 mmol/l but less than 11.1 mmol/l</li><li>people with IFG should then be offered an oral glucose tolerance test to rule out a diagnosis of diabetes. A result below 11.1 mmol/l but above 7.8 mmol/l indicates that the person doesn't have diabetes but does have IGT</li></ul></div>
<div id="notecontent">Diabetes mellitus may be a pre-existing problem or develop during pregnancy, gestational diabetes.
It complicates up to 1 in 20 pregnancies. NICE estimate the following breakdown:<br>
<ul>
<li>87.5% have gestational diabetes</li>
<li>7.5% have type 1 diabetes</li>
<li>5% have type 2 diabetes</li>
</ul><br>Risk factors for gestational diabetes<br>
<ul>
<li>BMI of > 30 kg/m²</li>
<li>previous macrosomic baby weighing 4.5 kg or above</li>
<li>previous gestational diabetes</li>
<li>first-degree relative with diabetes</li>
<li>family origin with a high prevalence of diabetes (South Asian, black Caribbean and Middle Eastern)</li>
</ul><br>Screening for gestational diabetes<br>
<ul>
<li>women who've previously had gestational diabetes: oral glucose tolerance test (OGTT) should be performed as
soon as possible after booking and at 24-28 weeks if the first test is normal. NICE also recommend that
early self-monitoring of blood glucose is an alternative to the OGTTs</li>
<li>women with any of the other risk factors should be offered an OGTT at 24-28 weeks</li>
</ul><br>Diagnostic thresholds for gestational diabetes<br>
<ul>
<li>these have recently been updated by NICE, gestational diabetes is diagnosed if either:</li>
<li>fasting glucose is >= 5.6 mmol/l</li>
<li>2-hour glucose is >= 7.8 mmol/l</li>
</ul><br>Management of gestational diabetes<br>
<ul>
<li>newly diagnosed women should be seen in a joint diabetes and antenatal clinic within a week</li>
<li>women should be taught about selfmonitoring of blood glucose</li>
<li>advice about diet (including eating foods with a low glycaemic index) and exercise should be given</li>
<li>if the fasting plasma glucose level is < 7 mmol//l a trial of diet and exercise should be offered</li>
<li>if glucose targets are not met within 1-2 weeks of altering diet/exercise metformin should be started</li>
<li>if glucose targets are still not met insulin should be added to diet/exercise/metformin</li>
<li>if at the time of diagnosis the fasting glucose level is >= 7 mmol/l insulin should be started</li>
<li>if the plasma glucose level is between 6-6.9 mmol/l, and there is evidence of complications such as macrosomia or hydramnios, insulin should be offered</li>
<li>glibenclamide should only be offered for women who cannot tolerate metformin or those who fail to meet the glucose targets with metformin but decline insulin treatment</li>
</ul>
<br>Management of pre-existing diabetes<br>
<ul>
<li>weight loss for women with BMI of > 27 kg/m^2</li>
<li>stop oral hypoglycaemic agents, apart from metformin, and commence insulin</li>
<li>folic acid 5 mg/day from pre-conception to 12 weeks gestation</li>
<li>aspirin 75mg/day from 12 weeks until the birth of the baby, to reduce the risk of pre-eclampsia</li>
<li>detailed anomaly scan at 20 weeks including four-chamber view of the heart and outflow tracts</li>
<li>tight glycaemic control reduces complication rates</li>
<li>treat retinopathy as can worsen during pregnancy</li>
</ul><br><b>Targets for self monitoring of pregnant women (pre-existing and gestational diabetes)</b><br><br>
<div class="table-responsive">
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1">
<thead>
<tr>
<th>Time</th>
<th>Target</th>
</tr>
</thead>
<tbody>
<tr>
<td>Fasting</td>
<td>5.3 mmol/l</td>
</tr>
<tr>
<td>1 hour after meals</td>
<td>7.8 mmol/l, or:</td>
</tr>
<tr>
<td>2 hour after meals</td>
<td>6.4 mmol/l</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="notecontent"><b>Intrahepatic cholestasis of pregnancy</b><br><br>Intrahepatic cholestasis of pregnancy (also known as obstetric cholestasis) occurs in around 1% of pregnancies and is generally seen in the third trimester. It is the most common liver disease of pregnancy.<br><br>Features<br><ul><li>pruritus, often in the palms and soles</li><li>no rash (although skin changes may be seen due to scratching)</li><li>raised bilirubin</li></ul><br>Management<br><ul><li>ursodeoxycholic acid is used for symptomatic relief</li><li>weekly liver function tests</li><li>women are typically induced at 37 weeks</li></ul><br>Complications include an increased rate of stillbirth. It is not generally associated with increased maternal morbidity<br><br><br><b>Acute fatty liver of pregnancy</b><br><br>Acute fatty liver of pregnancy is rare complication which may occur in the third trimester or the period immediately following delivery.<br><br>Features<br><ul><li>abdominal pain</li><li>nausea & vomiting</li><li>headache</li><li>jaundice</li><li>hypoglycaemia</li><li>severe disease may result in pre-eclampsia</li></ul><br>Investigations<br><ul><li>ALT is typically elevated e.g. 500 u/l</li></ul><br>Management<br><ul><li>support care</li><li>once stabilised delivery is the definitive management</li></ul><br><br>Gilbert's, Dubin-Johnson syndrome, may be exacerbated during pregnancy<br><br>HELLP<br><ul><li>Haemolysis, Elevated Liver enzymes, Low Platelets</li></ul></div>
!!Pregnancy: risks of smoking, alcohol and illegal drugs
<div id="notecontent">The table below summarises some of the risks associated with drug use during pregnancy:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Risks</b></th></tr></thead><tbody><tr><td>Smoking</td><td>Increased risk of miscarriage<br>Increased risk of pre-term labour<br>Increased risk of stillbirth<br>IUGR<br>Increased risk of sudden unexpected death in infancy</td></tr><tr><td>Alcohol</td><td>Fetal alcohol syndrome (FAS)<br><ul><li>learning difficulties</li><li>characteristic facies: smooth philtrum, thin vermilion, small palpebral fissures, epicanthic folds, microcephaly</li><li>IUGR & postnatal restricted growth</li></ul><br>Binge drinking is a major risk factor for FAS</td></tr><tr><td>Cannabis</td><td>Similar to smoking risks due to tobacco content</td></tr><tr><td>Cocaine</td><td>Maternal risks<br><ul><li>hypertension in pregnancy including pre-eclampsia</li><li>placental abruption</li></ul><br>Fetal risk<br><ul><li>prematurity</li><li>neonatal abstinence syndrome</li></ul></td></tr><tr><td>Heroin</td><td>Risk of neonatal abstinence syndrome</td></tr></tbody></table></div></div>
Premature ovarian failure is defined as the onset of menopausal symptoms and elevated gonadotrophin levels before the age of 40 years. It occurs in around 1 in 100 women.
Causes
* idiopathic - the most common cause
* chemotherapy
* autoimmune
* radiation
Features are similar to those of the normal climacteric but the actual presenting problem may differ
* climacteric symptoms: hot flushes, night sweats
* infertility
* secondary amenorrhoea
* raised FSH, LH levels
---
also see [[Menopause: premature]]
<div id="notecontent">The following medications may exacerbate heart failure:<br><ul><li>thiazolidinediones<ul><li>pioglitazone is contraindicated as it causes fluid retention</li></ul></li><li>verapamil<ul><li>negative inotropic effect</li></ul></li><li><span id="concept_popover_id_10387" class="concept concept-1 trigger-link" data-cid="10387" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10387'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating10387' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(244,255,0)'>Importance: <b>52</b></span> </div>" data-original-title="NSAIDs should be used with caution in patients with heart failure">NSAIDs</span>/glucocorticoids<ul><li>should be used with caution as they cause fluid retention</li><li>low-dose aspirin is an exception - many patients will have coexistent cardiovascular disease and the benefits of taking aspirin easily outweigh the risks</li></ul></li><li>class I antiarrhythmics<ul><li>flecainide (negative inotropic and proarrhythmic effect)</li></ul></li></ul></div>
Very few drugs are known to be completely safe in pregnancy. The list below largely comprises of those known to be harmful. Some countries have developed a grading system - see the link.
Antibiotics
* tetracyclines
* aminoglycosides
* sulphonamides and trimethoprim
* quinolones: the BNF advises to avoid due to arthropathy in some animal studies
Other drugs
* ACE inhibitors, angiotensin II receptor antagonists
* statins
* warfarin
* sulfonylureas
* retinoids (including topical)
* cytotoxic agents
The majority of antiepileptics including valproate, carbamazepine and phenytoin are known to be potentially harmful. The decision to stop such treatments however is difficult as uncontrolled epilepsy is also a risk
---
>WATER - PROTEINCARB - FAT
* In addition to [[Breast feeding|Prescribing in BreastFeeding]] contraindications, ACE/ARBs, AminoGlycoside, StaTin, are contraindicated in Pregnancy
---
>PREGNANCY is WAR - BREAST ASPIRations
* Warfarin in Pregnancy - Aspirin in [[Breast feeding|Prescribing in BreastFeeding]] are contraindicated
---
''Painless bleeding after 28wks''
Placenta praevia describes a placenta lying wholly or partly in the lower uterine segment
Epidemiology
* 5% will have low-lying placenta when scanned at 16-20 weeks gestation
* incidence at delivery is only 0.5%, therefore most placentas rise away from cervix
Associated factors
* multiparity
* multiple pregnancy
* embryos are more likely to implant on a lower segment scar from previous caesarean section
Clinical features
* shock in proportion to visible loss
* no pain
* uterus not tender
* lie and presentation may be abnormal
* fetal heart usually normal
* coagulation problems rare
* small bleeds before large
Investigations
* placenta praevia is often picked up on the routine 20 week abdominal ultrasound
* the RCOG recommend the use of transvaginal ultrasound as it improves the accuracy of placental localisation and is considered safe
Classical grading
* I - placenta reaches lower segment but not the internal os
* II - placenta reaches internal os but doesn't cover it
* III - placenta covers the internal os before dilation but not when dilated
* IV - placenta completely covers the internal os
---
>PREVIOUS things are NOT PAINFUL anymore
<div id="body_content">
In exams, primary hyperparathyroidism is stereotypically seen in elderly females with an unquenchable thirst and an inappropriately normal or raised parathyroid hormone level. It is most commonly due to a solitary adenoma<br><br>Causes of primary hyperparathyroidism <br><ul><li><span class="concept" data-cid="4520">80%: solitary adenoma</span></li><li>15%: hyperplasia</li><li>4%: multiple adenoma</li><li>1%: carcinoma</li></ul><br>Features - 'bones, stones, abdominal groans and psychic moans'<br><ul><li>polydipsia, polyuria</li><li>peptic ulceration/constipation/pancreatitis </li><li>bone pain/fracture</li><li>renal stones</li><li>depression</li><li>hypertension</li></ul><br>Associations<br><ul><li>hypertension</li><li>multiple endocrine neoplasia: MEN I and II</li></ul><br>Investigations<br><ul><li>raised calcium, low phosphate</li><li>PTH may be raised or <span class="concept" data-cid="512">(inappropriately, given the raised calcium) normal</span></li><li>technetium-MIBI subtraction scan</li><li><span class="concept" data-cid="3345">pepperpot skull</span> is a characteristic X-ray finding of hyperparathyroidism</li></ul><br>Treatment<br><ul><li>the definitive management is total parathyroidectomy</li><li>conservative management may be offered if the calcium level is less than 0.25 mmol/L above the upper limit of normal AND the patient is > 50 years AND there is no evidence of end-organ damage </li><li>calcimimetic agents such as cinacalcet are sometimes used in patients who are unsuitable for surgery</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb166b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb166.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb166b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Bilateral hand radiographs in a middle-aged woman demonstrating generalised osteopenia, erosion of the terminal phalangeal tufts (acro-osteolysis) and subperiosteal resorption of bone particularly the radial aspects of the 2nd and 3rd middle phalanges. These changes are consistent with a diagnosis of hyperparathyroidism.</div></div>
!!!<center>''PROCEDURAL SEDATION''</center>
<hr>
Procedural sedation is a technique of administering sedatives or dissociative agents with or without analgesics to induce a state that allows the patient to tolerate unpleasant procedures while maintaining cardiorespiratory function
''Sedation Levels''
|!Level|!Definition|!Comments|
|Minimal Sedation|Standard pain medications||
|Moderate Sedation|Awake and able to respond to questions|use in: LP, I+D|
|Dissociative Sedation|Trance-like state, airway reflexes preserved||
|Deep Sedation|React purposefully to painful stimuli|use in: Reduction|
|General Anesthesia|Unarousable, requires intubation/advanced airway||
''Procedural Checklist''
* Consent in chart
* PIV with fluids running
* ETCO2 and NC connected to patient
* Airway preparation
** Suction with Yankauer attached
** BVM attached to wall oxygen
** Oral/nasal airways
** Mac/Miller blades
** ET tubes with stylets
* Meds at bedside
** Sedation Meds
** Naloxone 0.4mg if opioid being used, not drawn up
** Epinephrine, cardiac syringe (1:10,000) unopened and 10 cc NS Flush with needle
** Glycopyrollate, 1 vial; not drawn up
<hr><center>''Sedative agents''</center><hr>
* The ideal agent is short-acting with minimal respiratory or hemodynamic depression
* Ketamine offers the greatest safety profile overall but caution in the elderly or patients with known cardiovascular disease due to sympathetic surge
* Propofol is often used for orthopedic procedures due to muscle relaxation, but can cause respiratory depression and hypotension
* Etomidate used less frequently than other agents; causes myoclonus that is undesirable for orthopedic reduction
''Fentanyl/Midazolam''
* Dose fentanyl first: 0.5-1mcg/kg
* Follow with 1-2 mg of midazolam
* Designed for moderate sedation
** Too deep when painful stimulus stops the patient may become apneic
** Combination of other opioids with benzodiazepines such as lorazepam is possible
* Duration 30min
''Fentanyl/Etomidate''
* Similar to fentnayl/midazolam, but better because shorter duration of action
* An alternative to propofol for brief sedation
** E.g. shoulder/hip reduction, cardioversion
* Can cause myoclonus and occaisonly adrenal supression.
* Dose fentanyl first: 0.5-1mcg/kg
* Etomidate 0.15mg/kg (8-10mg avg)
* Duration: 6min
''Brevital (Methohexital)/Fentanyl''
* Suppresses the reticular activating center in the brainstem and cerebral cortex, thereby causing sedation
* Sedation and amnesia, no analgesia
* Dose fentanyl first: 0.5-1mcg/kg
* Initial dose 0.75 to 1mg/kg IV
* Repeat doses of 0.5mg/kg IV can be given every two minutes.
* Immediate onset, duration <10 minutes
''Ketamine''
* Noncompetitive NMDA receptor antagonist that produced dissociative state
* Sedation, analgesia, and amnesia
* Safe to use in children undergoing procedural sedation and analgesia (Level A recommendation)
* Maintains upper airway tone, protective reflexes, and spontaneous breathing
* Little evidence to advocate for prevention of emergence phenomenon, may pretreat with midazolam 0.05 mg/kg (2-4 mg for most adults)
** Versed can be used subsequently if emergence reaction occurs
* 1-2 mg/kg IV, followed by 0.5-1 mg/kg IV PRN
* 4-5 mg/kg IM → repeat 2-4 mg/kg IM after 10 min if first dose unsuccessful
* Duration 10 to 20 minutes
''Propofol/Ketamine (Ketofol)''
* 1:1 mixture of ketamine and propofol
* Safe in children and adults undergoing procedural sedation and anesthesia (Level B Reccomendation)
* Theorized that side-effect profiles counter one another
** Propofol-associated hypotension and respiratory depression can theoretically be reduced with increases in circulatory norepinephrine induced by ketamine
** Ketamine associated nausea and emergence reactions are theoretically reduced by the antiemetic and anxiolytic properties of propofol
* A study of pediatric patients found the total patient sedation times to be shorter (3 minutes) with the combined ketamine and propofol regimen compared with ketamine alone
* Dose: 0.5mg/kg propofol with 0.5mg/kg ketamine (may be mixed in same syringe or given separately)
''Dexmedetomidine''
* 1 mcg/kg loading dose followed by 0.2-1 mcg/kg/hr maintenance dose
* Side effects include bradycardia and hypotension.
* Avoid in patients with heart blocks
* May need to supplement with 1-2 mg of midazolam
''Etomidate''
* 0.1mg/kg one time dosing
* Max: 10mg
* Minimal respiratory depression but decrease blood pressure and heart rate (alpha2 agonism)
''Side Effects''
* Desaturation
** Stimulate
*** Try pressure behind ear
** Jaw thrust
** Nasal airway
** BVM (just 10 breaths/min) count to 5 between breaths
** NIV
** LMA
** Intubation
<center>
<$button class="tile-link"><$action-navigate $to="Procedural Sedation"/>Procedural Sedation</$button>
<$button class="tile-link"><$action-navigate $to="Suture Basics"/>Suture Basics</$button>
<$button class="tile-link"><$action-navigate $to="Central Line Placement"/>Central Line Placement</$button>
<$button class="tile-link"><$action-navigate $to="Chest Tube Placement"/>Chest Tube Placement</$button>
<$button class="tile-link"><$action-navigate $to="Foley Catheter Insertion"/>Foley Catheter Insertion</$button>
<$button class="tile-link"><$action-navigate $to="Incision & Drainage"/>Incision & Drainage</$button>
<$button class="tile-link"><$action-navigate $to="Lumbar Puncture"/>Lumbar Puncture</$button>
<$button class="tile-link"><$action-navigate $to="NG Tube Insertion"/>NG Tube Insertion</$button>
<$button class="tile-link"><$action-navigate $to="Orotracheal Intubation"/>Orotracheal Intubation</$button>
<$button class="tile-link"><$action-navigate $to="Paracentesis"/>Paracentesis</$button>
<$button class="tile-link"><$action-navigate $to="Thoracentesis"/>Thoracentesis</$button></center>
Prolactin is secreted by the anterior pituitary gland with release being controlled by a wide variety of physiological factors. Dopamine acts as the primary prolactin releasing inhibitory factor and hence dopamine agonists such as bromocriptine may be used to control galactorrhoea. It is important to differentiate the causes of galactorrhoea (due to the actions of prolactin on breast tissue) from those of gynaecomastia
Features of excess prolactin
* men: impotence, loss of libido, galactorrhoea
* women: amenorrhoea, galactorrhoea
Causes of raised prolactin
* prolactinoma
* pregnancy
* oestrogens
* physiological: stress, exercise, sleep
* acromegaly: 1/3 of patients
* polycystic ovarian syndrome
* primary hypothyroidism (due to thyrotrophin releasing hormone (TRH) stimulating prolactin release)
Drug causes of raised prolactin
* metoclopramide, domperidone
* phenothiazines
* haloperidol
* very rare: SSRIs, opioids
---
Causes of raised ''p''rolactin - the ''p'''s
* ''p''regnancy
* ''p''rolactinoma
* ''p''hysiological
* ''p''olycystic ovarian syndrome
* ''p''rimary hypothyroidism
* ''p''henothiazines, metoclo''p''ramide, dom''p''eridone
---
<div id="notecontent">Prolactinomas are a type of pituitary adenoma, a benign tumour of the pituitary gland. <br><br>Pituitary adenomas can be classified according to:<br><ul><li><b>size</b> (a microadenoma is <1cm and a macroadenoma is >1cm)</li><li><b>hormonal status</b> (a secretory/functioning adenoma produces and excess of a particular hormone and a non-secretory/functioning adenoma does not produce a hormone to excess)</li></ul><br>Prolactinomas are the most common type and they produce an excess of prolactin.<br><br>Features of excess prolactin<br><ul><li>men: impotence, loss of libido, <span class="concept" data-cid="8972">galactorrhoea</span></li><li>women: amenorrhoea, infertility, <span class="concept" data-cid="8972">galactorrhoea</span>, <span class="concept" data-cid="9437">osteoporosis</span></li></ul><br>Diagnosis<br><ul><li>MRI</li></ul><br>Management<br><ul><li>in the majority of cases, symptomatic patients are treated medically with <span id="concept_popover_id_9157" class="concept concept-3-u trigger-link" data-cid="9157" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9157'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating9157' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(15,255,0)'>Importance: <b>97</b></span> </div>" data-original-title="Dopamne agonists (e.g. cabergoline, bromocriptine) are first-line treatment for prolactinomas, even if there are significant neurological complicatons">dopamine agonists</span> (e.g. cabergoline, bromocriptine) which inhibit the release of prolactin from the pituitary gland</li><li>surgery is performed for patients who cannot tolerate or fail to respond to medical therapy. A trans-sphenoidal approach is generally preferred unless there is a significant extra-pituitary extension</li></ul></div>
<hr><center>''PROPOFOL''</center><hr>
<center>''Adult Dosage''</center><hr>
''ICU sedation in intubated mechanically-ventilated patients:''
* Avoid rapid bolus injection; individualize dose and titrate to response.
* ''Continuous infusion:'' Initial: 5 mcg/kg/minute (or 0.3 mg/kg/hour); increase by 5-10 mcg/kg/minute (or 0.3-0.6 mg/kg/hour) every 5-10 minutes until desired sedation level is achieved;
* ''usual maintenance:'' 5-80 mcg/kg/minute (or 0.3-4.8 mg/kg/hour); reduce dose after adequate sedation established and adjust to response (eg, evaluate frequently to use minimum dose for sedation).
<center>
|!Propofol (10 mg/ml) for initiation and maintenance of sedation in intubated and mechanically ventilated patients|<|<|<|<|<|<|<|<|<|<|
|!mcg/kg/min|!5|!10|!15|!20|!25|!30|!35|!40|!45|!50|
|!40 kg| 1.2 | 2.4 | 3.6 | 3.6 | 6.0 | 7.2 | 8.4 | 9.6 | 11.0 | 12.0 |
|!45 kg| 1.4 | 2.7 | 4.1 | 4.1 | 6.8 | 8.1 | 9.5 | 10.8 | 12.4 | 13.5 |
|!50 kg| 1.5 | 3.0 | 4.5 | 4.5 | 7.5 | 9.0 | 10.5 | 12.0 | 13.8 | 15.0 |
|!55 kg| 1.7 | 3.3 | 5.0 | 5.0 | 8.3 | 9.9 | 11.6 | 13.2 | 15.2 | 16.5 |
|!60 kg| 1.8 | 3.6 | 5.4 | 5.4 | 9.0 | 10.8 | 12.6 | 14.4 | 16.6 | 18.0 |
|!65 kg| 2.0 | 3.9 | 5.9 | 5.9 | 9.8 | 11.7 | 13.7 | 15.6 | 17.9 | 19.5 |
|!70 kg| 2.1 | 4.2 | 6.3 | 6.3 | 10.5 | 12.6 | 14.7 | 16.8 | 19.3 | 21.0 |
|!75 kg| 2.3 | 4.5 | 6.8 | 6.8 | 11.3 | 13.5 | 15.8 | 18.0 | 20.7 | 22.5 |
|!80 kg| 2.4 | 4.8 | 7.2 | 7.2 | 12.0 | 14.4 | 16.8 | 19.2 | 22.1 | 24.0 |
|!85 kg| 2.6 | 5.1 | 7.7 | 7.7 | 12.8 | 15.3 | 17.9 | 20.4 | 23.5 | 25.5 |
|!90 kg| 2.7 | 5.4 | 8.1 | 8.1 | 13.5 | 16.2 | 18.9 | 21.6 | 24.8 | 27.0 |
|!95 kg| 2.9 | 5.7 | 8.6 | 8.6 | 14.3 | 17.1 | 20.0 | 22.8 | 26.2 | 28.5 |
|!100 kg| 3.0 | 6.0 | 9.0 | 9.0 | 15.0 | 18.0 | 21.0 | 24.0 | 27.6 | 30.0 |
</center>
!!!<center>''PROSTATITIS/ABSCESS''</center>
<hr>
* Cipro 400 IV q8h OR Levoflox 500 IV q24h OR Ceftriaxone 1 g IV Q24H; Oral: Levoflox 750/Moxiflox 400 OD 1-2 wks OR Doxy 200 mg Q12H 3ds, then 100 mg Q12H 11 ds OR Bactrim SS BD 2 wks
<div id="notecontent">The most common valves which need replacing are the aortic and mitral valve. There are two main options for replacement: biological (bioprosthetic) or mechanical.<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Biological (bioprosthetic) valves</b></th><th><b>Mechanical valves</b></th></tr></thead><tbody><tr><td>Usually bovine or porcine in origin<br><br>Major disadvantage is structural deterioration and calcification over time. Most older patients ( > 65 years for aortic valves and > 70 years for mitral valves) receive a bioprosthetic valve<br><br>Long-term anticoagulation not usually needed. Warfarin may be given for the first 3 months depending on patient factors. Low-dose aspirin is given long-term.</td><td>The most common type now implanted is the bileaflet valve. Ball-and-cage valves are rarely used nowadays<br><br>Mechanical valves have a low failure rate<br><br>Major disadvantage is the increased risk of thrombosis meaning long-term anticoagulation is needed. Following the 2017 European Society of Cardiology guidelines, aspirin is only normally given in addition if there is an additional indication, e.g. ischaemic heart disease.<br><br>Target INR<br><ul><li>aortic: 3.0</li><li>mitral: 3.5</li></ul></td></tr></tbody></table></div><br>Following the 2008 NICE guidelines for prophylaxis of endocarditis antibiotics are no longer recommended for common procedures such as dental work.</div>
<div class="twocolumns">
<$list filter="[tag[Protocols]sort[title]]"/>
</div>
<div id="notecontent"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Condition</th><th>Notes</th></tr></thead><tbody><tr><td><b>Liver disease</b></td><td>History of alcohol excess<br>Stigmata of chronic liver disease: spider naevi, bruising, palmar erythema, gynaecomastia etc<br>Evidence of decompensation: ascites, jaundice, encephalopathy</td></tr><tr><td><span class="concept" data-cid="9289"><b>Iron deficiency anaemia</b></span></td><td>Pallor<br>Other signs: koilonychia, atrophic glossitis, post-cricoid webs, angular stomatitis</td></tr><tr><td><b>Polycythaemia</b></td><td>Pruritus particularly after warm bath<br>'Ruddy complexion'<br>Gout<br>Peptic ulcer disease</td></tr><tr><td><b><span class="concept" data-cid="10046">Chronic kidney disease</span></b></td><td>Lethargy & pallor<br>Oedema & weight gain<br>Hypertension</td></tr><tr><td><b>Lymphoma</b></td><td>Night sweats<br>Lymphadenopathy<br>Splenomegaly, hepatomegaly<br>Fatigue</td></tr></tbody></table></div><br>Other causes:<br><ul><li>hyper- and hypothyroidism</li><li>diabetes</li><li>pregnancy</li><li>'senile' pruritus</li><li>urticaria</li><li>skin disorders: eczema, scabies, psoriasis, pityriasis rosea</li></ul></div>
!!Primary sclerosing cholangitis
Primary sclerosing cholangitis is a biliary disease of unknown aetiology characterised by inflammation and fibrosis of intra and extra-hepatic bile ducts.
Associations
* ulcerative colitis: 4% of patients with UC have PSC, 80% of patients with PSC have UC
* Crohn's (much less common association than UC)
* HIV
Features
* cholestasis
** jaundice, pruritus
** raised bilirubin + ALP
* right upper quadrant pain
* fatigue
Investigation
* endoscopic retrograde cholangiopancreatography (ERCP) or magnetic resonance cholangiopancreatography (MRCP) are the standard diagnostic investigations, showing multiple biliary strictures giving a 'beaded' appearance
* p-ANCA may be positive
* there is a limited role for liver biopsy, which may show fibrous, obliterative cholangitis often described as 'onion skin'
Complications
* cholangiocarcinoma (in 10%)
* increased risk of colorectal cancer
---
>SCLerosing - ULCerative (UC>Crohn)
---
>Sclerosed Beads
Pseudogout is a form of microcrystal synovitis caused by the deposition of calcium pyrophosphate dihydrate crystals in the synovium.
Risk factors
* haemochromatosis
* hyperparathyroidism
* acromegaly
* low magnesium, low phosphate
* Wilson's disease
Features
* knee, wrist and shoulders most commonly affected
* joint aspiration: weakly-positively birefringent rhomboid-shaped crystals
* x-ray: `chondrocalcinosis` (calcification of cartilage)
** in the knee this can be seen as linear calcifications of the meniscus and articular cartilage
Management
* aspiration of joint fluid, to exclude septic arthritis
* NSAIDs or intra-articular, intra-muscular or oral steroids as for gout
<div id="body_content">
Post-streptococcal glomerulonephritis typically occurs <span class="concept" data-cid="5031">7-14 days</span> following a group A beta-haemolytic <i>Streptococcus</i> infection (usually <i>Streptococcus pyogenes</i>). It is caused by <span class="concept" data-cid="8860">immune complex (IgG, IgM and C3) deposition in the glomeruli</span>. Young children are most commonly affected.<br><br>Features<br><ul><li>general: headache, malaise</li><li>haematuria</li><li>proteinuria</li><li>hypertension</li><li>low C3</li><li>raised ASO titre</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd901b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd901.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd901b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">IgA nephropathy and post-streptococcal glomerulonephritis are often confused as they both can cause renal disease following an URTI</div><br>Renal biopsy features<br><ul><li>post-streptococcal glomerulonephritis causes acute, diffuse proliferative glomerulonephritis</li><li>endothelial proliferation with neutrophils</li><li>electron microscopy: <span class="concept" data-cid="8858">subepithelial 'humps' caused by lumpy immune complex deposits</span></li><li>immunofluorescence: <span class="concept" data-cid="8859">granular or 'starry sky' appearance</span></li></ul><br>Carries a good prognosis<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb072b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb072.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb072b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Proliferation of endothelium and mesangium with recruitment of neutrophils. Tubules are normal</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb073b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb073.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb073b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext"><span class="concept" data-cid="8858">Subepithelial humps</span> on the outside of the basal membrane</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb074b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb074.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb074b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Electron microscopy. Numerous neutrophils (blue arrows) and <span class="concept" data-cid="8858">subepithelial humps</span>(red arrows)</div></div>
<div id="notecontent">Psoriasis is a common (prevalence around 2%) and chronic skin disorder. It generally presents with red, scaly patches on the skin although it is now recognised that patients with psoriasis are at increased risk of arthritis and cardiovascular disease.<br><br>Pathophysiology<br><ul><li>multifactorial and not yet fully understood</li><li>genetic: associated HLA-B13, -B17, and -Cw6. Strong concordance (70%) in identical twins</li><li>immunological: abnormal T cell activity stimulates keratinocyte proliferation. There is increasing evidence this may be mediated by a novel group of T helper cells producing IL-17, designated Th17. These cells seem to be a third T-effector cell subset in addition to Th1 and Th2</li><li>environmental: it is recognised that psoriasis may be worsened (e.g. Skin trauma, stress), triggered (e.g. Streptococcal infection) or improved (e.g. Sunlight) by environmental factors</li></ul><br>Recognised subtypes of psoriasis<br><ul><li>plaque psoriasis: the most common sub-type resulting in the typical well demarcated red, scaly patches affecting the extensor surfaces, sacrum and scalp</li><li>flexural psoriasis: in contrast to plaque psoriasis the skin is smooth</li><li>guttate psoriasis: transient psoriatic rash frequently triggered by a streptococcal infection. Multiple red, teardrop lesions appear on the body</li><li>pustular psoriasis: commonly occurs on the palms and soles</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img007.jpg"></td></tr><tr><td valign="top" align="left"></td><td align="right"></td></tr></tbody></table></center><br>Other features<br><ul><li>nail signs: pitting, onycholysis</li><li>arthritis</li></ul><br>Complications<br><ul><li>psoriatic arthropathy (around 10%)</li><li>increased incidence of metabolic syndrome</li><li>increased incidence of cardiovascular disease</li><li>increased incidence of venous thromboembolism</li><li>psychological distress</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
---
The following factors may exacerbate psoriasis:
* trauma
* alcohol
* drugs: beta blockers, lithium, antimalarials (chloroquine and hydroxychloroquine), NSAIDs and ACE inhibitors, infliximab
* withdrawal of systemic steroids
Streptococcal infection may trigger guttate psoriasis.
---
>Drunk, Trauma - Pain Killers(NSAIDS)
>Stress - Stopping Steroids - Starting Infliximab
>Malaria Rx
>Urinating drugs - ACE inhibitors - Lithium (nephrogenic insipidus)
---
{{PsoriasisMx}}
<div id="notecontent">NICE released guidelines in 2012 on the management of psoriasis and psoriatic arthropathy. Please see the link for more details.<br><br>Management of chronic plaque psoriasis<br><ul><li>regular emollients may help to reduce scale loss and reduce pruritus</li><li>first-line: NICE recommend a potent corticosteroid applied once daily plus vitamin D analogue applied once daily (applied separately, one in the morning and the other in the evening) for up to 4 weeks as initial treatment</li><li>second-line: if no improvement after 8 weeks then offer a vitamin D analogue twice daily</li><li>third-line: if no improvement after 8-12 weeks then offer either: a potent corticosteroid applied twice daily for up to 4 weeks or a coal tar preparation applied once or twice daily</li><li>short-acting dithranol can also be used</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx151.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><br><div class="container"><div class="row"><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046.jpg : ddd046.jpg : pic1" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046.jpg : ddd046.jpg : pic1" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx151.jpg : ddx151.jpg : pic2" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx151.jpg : ddx151.jpg : pic2" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045.jpg : ddd045b.jpg : pic3" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045.jpg : ddd045b.jpg : pic3" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152.jpg : ddd152b.jpg : pic4" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152.jpg : ddd152b.jpg : pic4" alt=""></a></div></div></div><br>Using topical steroids in psoriasis<br><ul><li>as we know topical corticosteroid therapy may lead to skin atrophy, striae and rebound symptoms</li><li>systemic side-effects may be seen when potent corticosteroids are used on large areas e.g. > 10% of the body surface area</li><li>NICE recommend that we aim for a 4 week break before starting another course of topical corticosteroids</li><li>they also recommend using potent corticosteroids for no longer than 8 weeks at a time and very potent corticosteroids for no longer than 4 weeks at a time</li></ul><br>What should I know about vitamin D analogues?<br><ul><li>examples of vitamin D analogues include calcipotriol (Dovonex), calcitriol and tacalcitol</li><li>they work by reducing cell division and differentiation</li><li>adverse effects are uncommon</li><li>unlike corticosteroids they may be used long-term</li><li>unlike coal tar and dithranol they do not smell or stain</li><li>they tend to reduce the scale and thickness of plaques but not the erythema</li><li>they should be avoided in pregnancy</li><li>the maximum weekly amount for adults is 100g</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd153b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd153.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd153b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">A 'before and after' image showing the effect of 6 weeks of calcipotriol therapy on a large plaque. Note how the scale has improved but the erythema remains</div><br>Steroids in psoriasis<br><ul><li>topical steroids are commonly used in flexural psoriasis and there is also a role for mild steroids in facial psoriasis. If steroids are ineffective for these conditions vitamin D analogues or tacrolimus ointment should be used second line</li><li>patients should have 4 week breaks between course of topical steroids</li><li>very potent steroids should not be used for longer than 4 weeks at a time. Potent steroids can be used for up to 8 weeks at a time</li><li>the scalp, face and flexures are particularly prone to steroid atrophy so topical steroids should not be used for more than 1-2 weeks/month</li></ul><br>Scalp psoriasis<br><ul><li>NICE recommend the use of potent topical corticosteroids used once daily for 4 weeks</li><li>if no improvement after 4 weeks then either use a different formulation of the potent corticosteroid (for example, a shampoo or mousse) and/or a topical agents to remove adherent scale (for example, agents containing salicylic acid, emollients and oils) before application of the potent corticosteroid</li></ul><br>Face, flexutal and genital psoriasis<br><ul><li>NICE recommend offering a mild or moderate potency corticosteroid applied once or twice daily for a maximum of 2 weeks</li></ul><br><b>Secondary care management</b><br><br>Phototherapy<br><ul><li>narrow band ultraviolet B light is now the treatment of choice. If possible this should be given 3 times a week</li><li>photochemotherapy is also used - psoralen + ultraviolet A light (PUVA)</li><li>adverse effects: skin ageing, squamous cell cancer (not melanoma)</li></ul><br>Systemic therapy<br><ul><li>oral methotrexate is used first-line. It is particularly useful if there is associated joint disease</li><li>ciclosporin</li><li>systemic retinoids</li><li>biological agents: infliximab, etanercept and adalimumab</li><li>ustekinumab (IL-12 and IL-23 blocker) is showing promise in early trials</li></ul><br>Mechanism of action of commonly used drugs:<br><ul><li>coal tar: probably inhibit DNA synthesis</li><li>calcipotriol: vitamin D analogue which reduces epidermal proliferation and restores a normal horny layer</li><li>dithranol: inhibits DNA synthesis, wash off after 30 mins, SE: burning, staining</li></ul></div>
!!Psoriasis: management
NICE released guidelines in 2012 on the management of psoriasis and psoriatic arthropathy. Please see the link for more details.
;Management of chronic plaque psoriasis
* regular emollients may help to reduce scale loss and reduce pruritus
* `first-line: NICE recommend a potent corticosteroid applied once daily plus vitamin D analogue applied once daily (applied separately, one in the morning and the other in the evening) for up to 4 weeks as initial treatment`
* second-line: if no improvement after 8 weeks then offer a vitamin D analogue twice daily
* third-line: if no improvement after 8-12 weeks then offer either: a potent corticosteroid applied twice daily for up to 4 weeks or a coal tar preparation applied once or twice daily
* short-acting dithranol can also be used
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
<br>
<center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx151.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center>
<br>
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
<br>
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
<br><br>
<div class="container"><div class="row"><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046.jpg : ddd046.jpg : pic1" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd046.jpg : ddd046.jpg : pic1" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx151.jpg : ddx151.jpg : pic2" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx151.jpg : ddx151.jpg : pic2" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045.jpg : ddd045b.jpg : pic3" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd045.jpg : ddd045b.jpg : pic3" alt=""></a></div><div class="col-md-3"><a href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152.jpg : ddd152b.jpg : pic4" data-fancybox="gallery" data-caption=""><img class="img-thumbnail mx-auto d-block" style="max-height:150px;margin-bottom:10px;" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd152.jpg : ddd152b.jpg : pic4" alt=""></a></div></div></div><br>
Using topical steroids in psoriasis<br><ul><li>as we know topical corticosteroid therapy may lead to skin atrophy, striae and rebound symptoms</li><li>systemic side-effects may be seen when potent corticosteroids are used on large areas e.g. > 10% of the body surface area</li><li>NICE recommend that we aim for a 4 week break before starting another course of topical corticosteroids</li><li>they also recommend using potent corticosteroids for no longer than 8 weeks at a time and very potent corticosteroids for no longer than 4 weeks at a time</li></ul><br>What should I know about vitamin D analogues?<br><ul><li>examples of vitamin D analogues include calcipotriol (Dovonex), calcitriol and tacalcitol</li><li>they work by reducing cell division and differentiation</li><li>adverse effects are uncommon</li><li>unlike corticosteroids they may be used long-term</li><li>unlike coal tar and dithranol they do not smell or stain</li><li>they tend to reduce the scale and thickness of plaques but not the erythema</li><li>they should be avoided in pregnancy</li><li>the maximum weekly amount for adults is 100g</li></ul><br>
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd153b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd153.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd153b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center>
<div class="imagetext">A 'before and after' image showing the effect of 6 weeks of calcipotriol therapy on a large plaque. Note how the scale has improved but the erythema remains</div><br>Steroids in psoriasis<br><ul><li>topical steroids are commonly used in flexural psoriasis and there is also a role for mild steroids in facial psoriasis. If steroids are ineffective for these conditions vitamin D analogues or tacrolimus ointment should be used second line</li><li>patients should have 4 week breaks between course of topical steroids</li><li>very potent steroids should not be used for longer than 4 weeks at a time. Potent steroids can be used for up to 8 weeks at a time</li><li>the scalp, face and flexures are particularly prone to steroid atrophy so topical steroids should not be used for more than 1-2 weeks/month</li></ul><br>Scalp psoriasis<br><ul><li>NICE recommend the use of potent topical corticosteroids used once daily for 4 weeks</li><li>if no improvement after 4 weeks then either use a different formulation of the potent corticosteroid (for example, a shampoo or mousse) and/or a topical agents to remove adherent scale (for example, agents containing salicylic acid, emollients and oils) before application of the potent corticosteroid</li></ul><br>Face, flexutal and genital psoriasis<br><ul><li>NICE recommend offering a mild or moderate potency corticosteroid applied once or twice daily for a maximum of 2 weeks</li></ul><br><b>Secondary care management</b><br><br>Phototherapy<br><ul><li>narrow band ultraviolet B light is now the treatment of choice. If possible this should be given 3 times a week</li><li>photochemotherapy is also used - psoralen + ultraviolet A light (PUVA)</li><li>adverse effects: skin ageing, squamous cell cancer (not melanoma)</li></ul><br>Systemic therapy<br><ul><li>oral methotrexate is used first-line. It is particularly useful if there is associated joint disease</li><li>ciclosporin</li><li>systemic retinoids</li><li>biological agents: infliximab, etanercept and adalimumab</li><li>ustekinumab (IL-12 and IL-23 blocker) is showing promise in early trials</li></ul><br>Mechanism of action of commonly used drugs:<br><ul><li>coal tar: probably inhibit DNA synthesis</li><li>calcipotriol: vitamin D analogue which reduces epidermal proliferation and restores a normal horny layer</li><li>dithranol: inhibits DNA synthesis, wash off after 30 mins, SE: burning, staining</li></ul>
<div id="notecontent">Psoriatic arthropathy correlates poorly with cutaneous psoriasis and <span class="concept" data-cid="2246">often precedes the development of skin lesions</span>. Around 10-20% percent of patients with skin lesions develop an arthropathy with males and females being equally affected<br><br>Types*<br><ul><li>rheumatoid-like polyarthritis: (30-40%, most common type)</li><li><span class="concept" data-cid="9133">asymmetrical oligoarthritis</span>: typically affects hands and feet (20-30%)</li><li>sacroilitis</li><li><span class="concept" data-cid="1061">DIP joint disease</span> (10%)</li><li>arthritis mutilans (severe deformity fingers/hand, 'telescoping fingers')</li></ul><br>Management<br><ul><li>should be managed by a <span class="concept" data-cid="613">rheumatologist</span></li><li>treat as rheumatoid arthritis but <span class="concept" data-cid="5091">better prognosis</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd035b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd035.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd035b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Notice the nail changes on this image as well</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd094b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd094.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd094b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb182b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb182.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb182b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">X-ray showing some of changes in seen in psoriatic arthropathy. Note that the DIPs are predominately affected, rather than the MCPs and PIPs as would be seen with rheumatoid. Extensive juxta-articular periostitis is seen in the DIPs but the changes have not yet progressed to the classic 'pencil-in-cup' changes that are often seen.</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb183b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb183.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb183b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">This x-ray shows changes affecting both the PIPs and DIPs. The close-up images show extensive changes including large eccentric erosions, tuft resorption and progresion towards a 'pencil-in-cup' changes.</div><br>*Until recently it was thought asymmetrical oligoarthritis was the most common type, based on data from the original 1973 Moll and Wright paper. Please see the link for a comparison of more recent studies</div>
Psychosis is a term used to describe a person experiencing things differently from those around them. This may take the form of hallucinations (e.g. auditory) or delusions.
;Acute Psychosis Management
* Consider rapid tranquillisation or seclusion as alternatives to prolonged manual restraint (longer than 10 minutes)
* NICE recommend either `intramuscular (IM) lorazepam or IM haloperidol + IM promethazine` for rapid tranquilisation of patients with acutely disturbed behaviour.
* In patients who are antipsychotic naïve, and especially in those whose cardiac status is unknown they recommend lorazepam.
* Clozapine is not routinely used in rapid tranquilisation in normal settings. Diazepam has a longer onset of action than lorazepam and therefore the latter is preferred.
Post-traumatic stress disorder (PTSD) can develop in people of any age following a traumatic event, for example, a major disaster or childhood sexual abuse. It encompasses what became known as 'shell shock' following the first world war. One of the DSM-IV diagnostic criteria is that symptoms have been present for more than one month.
!!!Features
* re-experiencing: flashbacks, nightmares, repetitive and distressing intrusive images
* avoidance: avoiding people, situations or circumstances resembling or associated with the event
* hyperarousal: hypervigilance for threat, exaggerated startle response, sleep problems, irritability and difficulty concentrating
* emotional numbing - lack of ability to experience feelings, feeling detached from other people
* depression
* drug or alcohol misuse
* anger
* unexplained physical symptoms
!!!The symptoms of post traumatic stress disorder can be divided into 3 categories.
# Re-experiencing- This manifests as flashbacks of the event commonly through nightmares.
# Avoidance/ Rumination- Some PTSD sufferers avoid reminders of the event by avoiding people or situations that were associated with it. Others obsessively ruminate over the event and wonder how it could have been prevented in the first place.
# Hyperarousal- Suffers may experience difficulty sleeping, an exaggerated startle response, difficulty concentrating and difficulty in engaging with others.
!!!Management
* following a traumatic event single-session interventions (often referred to as debriefing) are not recommended
* watchful waiting may be used for mild symptoms lasting less than 4 weeks
* military personnel have access to treatment provided by the armed forces
* trauma-focused cognitive behavioural therapy (CBT) or eye movement desensitisation and reprocessing (EMDR) therapy may be used in more severe cases
* drug treatments for PTSD should not be used as a routine first-line treatment for adults. If drug treatment is used then venlafaxine or a selective serotonin reuptake inhibitor (SSRI), such as sertraline should be tried. In severe cases, NICE recommends that risperidone may be used
Puerperal pyrexia may be defined as a temperature of > 38ºC in the first 14 days following delivery.
Causes:
* endometritis: most common cause
* urinary tract infection
* wound infections (perineal tears + caesarean section)
* mastitis
* venous thromboembolism
Management
* if endometritis is suspected the patient should be referred to hospital for intravenous antibiotics (clindamycin and gentamicin until afebrile for greater than 24 hours)
---
>CLEAN GENT after DELIVERY
---
!!Idiopathic pulmonary fibrosis (IPF, previously termed cryptogenic fibrosing alveolitis)
is a chronic lung condition characterised by progressive fibrosis of the interstitium of the lungs. Whilst there are many causes of lung fibrosis (e.g. medications, connective tissue disease, asbestos) the term IPF is reserved when no underlying cause exists.
IPF is typically seen in patients aged 50-70 years and is twice as common in men.
Features
* progressive exertional dyspnoea
* bibasal fine end-inspiratory crepitations on auscultation
* dry cough
* clubbing
Diagnosis
* spirometry: classically a restrictive picture (FEV1 normal/decreased, FVC decreased, FEV1/FVC increased)
* impaired gas exchange: reduced transfer factor (TLCO)
* imaging: bilateral interstitial shadowing (typically small, irregular, peripheral opacities - 'ground-glass' - later progressing to 'honeycombing') may be seen on a chest x-ray but high-resolution CT scanning is the investigation of choice and required to make a diagnosis of IPF
* ANA positive in 30%, rheumatoid factor positive in 10% but this does not necessarily mean that the fibrosis is secondary to a connective tissue disease. Titres are usually low
Management
* pulmonary rehabilitation
* very few medications have been shown to give any benefit in IPF. There is some evidence that pirfenidone (an antifibrotic agent) may be useful in selected patients (see NICE guidelines)
* many patients will require supplementary oxygen and eventually a lung transplant
Prognosis
* poor, average life expectancy is around 3-4 years
<center>
<img width=500 src="https://www.dropbox.com/s/k0razfpjwwklpre/ipf1.jpg?raw=1">
</center>
Chest X-ray shows sub-pleural reticular opacities that increase from the apex to the bases of the lungs
<center>
<img width=500 src="https://www.dropbox.com/s/3z8dt7vapf0hnid/ipf2.jpg?raw=1">
</center>
<center>
<img width=500 src="https://www.dropbox.com/s/1zhrjcubearbuyj/ipf3.jpg?raw=1">
</center>
Chest X-ray and CT scan from a patient who presented with dyspnoea. The x-ray shows reitcular opacities predominantly in the bases. In addition the CT demonstrates honeycombing and traction bronchiectasis
<center>
<img width=500 src="https://www.dropbox.com/s/68bap02y9y652ek/ipf4.jpg?raw=1">
</center>
CT scan showing advanced pulmonary fibrosis including 'honeycombing'
<div id="notecontent">NICE updated their guidelines on the management of venous thromboembolism (VTE) in 2020. Some of the key changes include recommending the following:<br><ul><li>the use of direct oral anticoagulants (DOACs) as first-line treatment for most people with VTE</li><li>the use of DOACs in patients with active cancer, as opposed to low-molecular weight heparin as was the previous recommendation</li><li>outpatient treatment in low-risk pulmonary embolism (PE) patients</li><li>routine cancer screening is no longer recommended following a VTE diagnosis</li></ul><br><br><b>Outpatient treatment in low-risk PE patients</b><br><br>Deep vein thrombosis has for a long time been treated on an outpatient condition. In contrast, patients with any form of PE were typically admitted. However, in recent years patients with a new diagnosis of PE who are deemed low-risk are now increasingly managed as outpatients. NICE formally supported this approach in their latest guidance.<br><ul><li>NICE recommends using a 'validated risk stratification tool' to determine the suitability of outpatient treatment.<ul><li>no guidance is given as to what tool should be used</li><li>the 2018 British Society guidelines support the use of the <span class="concept" data-cid="10423">Pulmonary Embolism Severity Index (PESI) score</span></li></ul></li><li>key requirements would clearly be haemodynamic stability, lack of comorbidities and support at home</li></ul><br><br><b>Anticogulant therapy</b><br><br>The cornerstone of VTE management is anticoagulant therapy. This was historically done with warfarin, often preceded by heparin until the INR was stable. However, the development of DOACs, and an evidence base supporting their efficacy, has changed modern management.<br><br>Choice of anticoagulant<br><ul><li>the big change in the 2020 guidelines was the increased use of DOACs</li><li>apixaban or rivaroxaban (both DOACs) should be offered first-line following the diagnosis of a PE<ul><li>instead of using low-molecular weight heparin (LMWH) until the diagnosis is confirmed, NICE now advocate using a <span class="concept" data-cid="8024">DOAC once a diagnosis is suspected</span>, with this continued if the diagnosis is confirmed</li><li>if neither apixaban or rivaroxaban are suitable then either LMWH followed by dabigatran or edoxaban OR LMWH followed by a vitamin K antagonist (VKA, i.e. warfarin)</li></ul></li><li>if the patient has active cancer<ul><li>previously LMWH was recommended</li><li>the new guidelines now recommend using a DOAC, unless this is contraindicated</li></ul></li><li>if renal impairment is severe (e.g. < 15/min) then LMWH, unfractionated heparin or LMWH followed by a VKA</li><li>if the patient has antiphospholipid syndrome (specifically 'triple positive' in the guidance) then LMWH followed by a VKA should be used</li></ul><br>Length of anticoagulation<br><ul><li>all patients should have anticoagulation for at least 3 months</li><li>continuing anticoagulation after this period is partly determined by whether the VTE was provoked or unprovoked<ul><li>a provoked VTE is due to an obvious precipitating event e.g. immobilisation following major surgery. The implication is that this event was transient and the patient is no longer at increased risk</li><li>an unprovoked VTE occurs in the absence of an obvious precipitating event, i.e. there is a possibility that there are unknown factors (e.g. mild thrombophilia) making the patient more at risk from further clots</li></ul></li><li><span id="concept_popover_id_8025" class="concept concept-3-u trigger-link" data-cid="8025" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8025'>You've been tested on this concept once, 1 second ago, and got the associated question correct.</div><br><div id='div_concept_rating8025' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(244,255,0)'>Importance: <b>52</b></span> </div>" data-original-title="'Provoked' pulmonary embolisms are typically treated for 3 months">if the VTE was provoked the treatment is typically stopped after the initial 3 months</span> (3 to 6 months for people with active cancer)</li><li><span id="concept_popover_id_8026" class="concept concept-0 trigger-link" data-cid="8026" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8026'>You've never been tested on this concept</div><br><div id='div_concept_rating8026' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(96,255,0)'>Importance: <b>81</b></span> </div>" data-original-title="'Unprovoked' pulmonary embolisms are typically treated for 6 months ">if the VTE was unprovoked then treatment is typically continued for up to 3 further months (i.e. 6 months in total)</span><ul><li>NICE recommend that whether a patient has a total of 3-6 months anticoagulant is based upon balancing a person's risk of VTE recurrence and their risk of bleeding</li><li>the HAS-BLED score can be used to help assess the risk of bleeding</li><li>NICE state: '<i>Explain to people with unprovoked DVT or PE and a low bleeding risk that the benefits of continuing anticoagulation treatment are likely to outweigh the risks. </i>'. The implication of this is that in the absence of a bleeding risk factors, patients are generally better off continuing anticoagulation for a total of 6 months </li></ul></li></ul><br><br><b>PE with haemodynamic instability</b><br><br><span class="concept" data-cid="201">Thrombolysis</span><br><ul><li>thrombolysis is now recommended as the first-line treatment for massive PE where there is circulatory failure (e.g. hypotension)</li><li>other invasive approaches should be considered where appropriate facilities exist</li></ul><br>Patients who have repeat pulmonary embolisms, despite adequate anticoagulation, may be considered for <span class="concept" data-cid="3319">inferior vena cava (IVC) filters</span>. These work by stopping clots formed in the deep veins of the leg from moving to the pulmonary arteries. IVC filter use is currently supported by NICE but other studies suggest a weak evidence base - please see the link for more details.</div>
---
!!!<center>''PULMONARY EMBOLISM PROTOCOL''</center>
<hr>
* Assess PreTP
* Use PERC (to decide whether any testing is necessary) or Wells criteria (to decide whether D-dimer is sufficient w/u)
* Exam: Unexplained ↑ HR, ↑ RR, ↓ SpO2, fever, JVD
* ''PERC Criteria for Pts w/ Low Risk of PE''
* Age ≥ 50
* Recent trauma or surgery or hosp w/i 4 wk
* HR ≥ 100
* Hemoptysis
* O2 Sat on room air <95%
* Exogenous estrogen
* Prior hx of DVT/PE
* Unilateral leg swelling
* If any of the above criteria present, PE cannot be r/o PE w/o additional dx tests.
* If all criteria negative, PE unlikely
* Get CBC, PT/PTT, Cr, CXR, D-dimer
* If “PE likely” by Well’s score or D-dimer positive, obtain additional testing:
* ''Bedside ECHO:'' RV dilatation (RV:LV >1) or dysfxn (hypokinesis, paradoxical septal wall motion, McConnell’s sign) can suggest dx but not r/o
* Combined thoracic & LE ultrasound can reduce the need for CTA by dx’ing DVT or suggesting alternative dx
* CT angiography
* V/Q scan (if CI to CTA)
* MR angiography: Use in pts w/ CI to CTA
* Pulmonary angio: Gold standard, though rarely used
* Get IV access
* ECG STAT
* O2 inh sos
* Cardiac Monitor
* CXR to r/o alternative dx
* If hemodynamically stable: diagnostic tests depending on pre-TP
* If unstable, start empiric antithrombotic tx ± lysis if potential benefit > bleeding risk
* IV fluids for ↓ BP (preload dep)
* Inj LMWH SC (1 mg/kg BID; renally dose)
* SC Fondaparinux (5 mg QD [<50kg], 7.5 mg QD [50–100 kg], 10 mg QD [>100 kg]; renally dose):
* IV UFH (80 U/kg bolus, 18 U/kg/h gtt)
* Warfarin (INR 2.0–3.0): Bridge w/ LMWH or Fondaparinux until INR therapeutic
* PO Rivaroxaban (15 mg BID × 3 wk, 20 mg QD thereafter)
* PO Apixaban (10 mg BD × 7d, 5 mg BD thereafter)
* IV thrombolysis (tPA: 100 mg over 2 h): Indicated if massive PE / HD instability (SBP <90 mmHg), HD unstable & high suspicion of PE, or submassive PE w/ high risk of hypotension (e/o significant pHTN or RV dysfxn)
* Submassive PE: tPA + UFH ↓ mortality & deterioration c/w UFH alone
* Consider lytics in unexplained PEA arrest if possibly 2/2 massive PE
* Catheter or surgical thrombectomy (PE): For pts w/ HD instability & massive PE if (1) CI to lysis, (2) failed lysis w/ tPA, or (3) experienced center & +RV dysfxn. Consult cardiac surgery; improved outcomes c/w UFH alone
* IVC filter: When a/c fails or CI; no long-term mortality benefit
|!Simplified Wells Criteria for PE|<|
|Clinical Signs & Sx of DVT|1 pt|
|Tachycardia>100 bpm|1 pt|
|Tachycardia>100 bpm|1 pt|
|Immobilization or Surgery w/i 4 wk|1 pt|
|Previous DVT/PE|1 pt|
|Hemoptysis|1 pt|
|Malignancy|1 pt|
|''PE Unlikely''|''≤1 pt''|
* Order D-dimer to r/o PE if PE is Unlikely (≤1 pt)
* Order imaging (CTA, V/Q) to r/o PE if >1
<center>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Asthma Exacerbation Protocol"/>Asthma Exacerbation Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="COPD Exacerbation Protocol"/>COPD Exacerbation Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Cough"/>Cough</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Dyspnea"/>Dyspnea</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Hemoptysis"/>Hemoptysis</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Pneumonia Protocol"/>Pneumonia Protocol</$button>
<$button style="width:100%;background-color:#E3E4FA;color:#2B3856;text-align:center;border: none;padding:10px;margin:2px;font-size: 24px;cursor: pointer;"><$action-navigate $to="Wheeze"/>Wheeze</$button>
</center>
!!!Pulsus paradoxus
* greater than the normal (10 mmHg) fall in systolic blood pressure during inspiration → faint or absent pulse in inspiration
* severe asthma, cardiac tamponade
!!!Slow-rising/plateau
* aortic stenosis
!!!Collapsing
* aortic regurgitation
* patent ductus arteriosus
* hyperkinetic states (anaemia, thyrotoxic, fever, exercise/pregnancy)
!!!Pulsus alternans
* regular alternation of the force of the arterial pulse
* severe LVF - Electrical alternans in Pericardial effusion
!!!Bisferiens pulse
* 'double pulse' - two systolic peaks
* mixed aortic valve disease
!!!'Jerky' pulse
* hypertrophic obstructive cardiomyopathy*
*HOCM may occasionally be associated with a bisferiens pulse
;BEEFED UP JERKY
:JERKY pulse in HOCM
---
* Purpura describes bleeding into the skin from small blood vessels that produces a non-blanching rash.
* Smaller petechiae (1-2 mm in diameter) may also be seen.
* It is typically caused by low platelets but may also be seen with bleeding disorders, such as von Willebrand disease.
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb302.jpg">
</center>
<center>
Purpuric rash secondary to medication-induced vasculitis
</center>
It is important to recognise purpura as it can indicate the presence of serious underlying disease. `Children with a new purpuric rash should be admitted immediately for investigations as it may be a sign of meningococcal septicaemia or acute lymphoblastic leukaemia`. Parenteral antibiotics should be given prior to transfer if meningococcal septicaemia is suspected.
;Causes
<table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Children</th><th>Adults</th></tr></thead><tbody><tr><td>• Meningococcal septicaemia<br>• Acute lymphoblastic leukaemia<br><br>• Congenital bleeding disorders<br>• Immune thrombocytopenic purpura<br>• Henoch-Schonlein purpura<br>• Non-accidental injury</td><td>• Immune thrombocytopenic purpura<br>• Bone marrow failure (secondary to leukaemias, myelodysplasia or bone metastases)<br>• Senile purpura<br>• Drugs (quinine, antiepileptics, antithrombotics)<br>• Nutritional deficiencies (vitamins B12, C and folate)</td></tr></tbody></table>
Raised superior vena cava pressure (e.g. secondary to a bad cough) may cause petechiae in the upper body but would not cause purpura.
* Non-bilious vomiting after 1-2 weeks
* Pyloric Stenosis is more common in males and leads to violent gastric emptying.
* The patient may appear constipated as there is so little feed passing through the pylorus.
* Treatment is surgical with a pylorotomy.
<div id="notecontent">Features<br><ul><li>typically on the lower limbs</li><li>initially small red papule</li><li>later deep, red, necrotic ulcers with a violaceous border</li><li>may be accompanied systemic symptoms e.g. Fever, myalgia</li></ul><br>Causes*<br><ul><li>idiopathic in 50%</li><li>inflammatory bowel disease: ulcerative colitis, Crohn's</li><li>rheumatoid arthritis, SLE</li><li>myeloproliferative disorders</li><li>lymphoma, myeloid leukaemias</li><li>monoclonal gammopathy (IgA)</li><li>primary biliary cirrhosis</li></ul><br>Management<br><ul><li>the potential for rapid progression is high in most patients and most doctors advocate oral steroids as first-line treatment</li><li>other immunosuppressive therapy, for example ciclosporin and infliximab, have a role in difficult cases</li></ul><br>*note whilst pyoderma gangrenosum can occur in diabetes mellitus it is rare and is generally not included in a differential of potential causes<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd036b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd036.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd036b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd037b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd037.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd037b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd038b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd038.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd038b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd039b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd039.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd039b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
<div id="body_content">
Pyogenic granuloma is a relatively common benign skin lesion. The name is confusing as they are neither true granulomas nor pyogenic in nature. There are multiple alternative names but perhaps 'eruptive haemangioma' is the most useful.<br><br>The cause of pyogenic granuloma is not known but a number of factors are linked:<br><ul><li>trauma</li><li>pregnancy</li><li>more common in women and young adults</li></ul><br>Features<br><ul><li>most common sites are head/neck, upper trunk and hands. Lesions in the oral mucosa are common in pregnancy</li><li>initially small red/brown spot</li><li>rapidly progress within days to weeks forming raised, red/brown lesions which are often spherical in shape</li><li>the lesions may bleed profusely or ulcerate</li></ul><br>Management<br><ul><li>lesions associated with pregnancy often resolve spontaneously post-partum</li><li>other lesions usually persist. Removal methods include curettage and cauterisation, cryotherapy, excision</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd097b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd097.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd097b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd098b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd098.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd098b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
<center>
<$button class="tile-link"><$action-navigate $to="Cardiology"/>CARDIOLOGY</$button>
<$button class="tile-link"><$action-navigate $to="Miscellaneous"/>GENERAL</$button>
<$button class="tile-link"><$action-navigate $to="Fluid And Electrolytes"/>FLUIDS, ELECTROLYTES AND NUTRITION</$button>
<$button class="tile-link"><$action-navigate $to="Gastroenterology"/>GASTROENTEROLOGY</$button>
<$button class="tile-link"><$action-navigate $to="Infectious Diseases"/>INFECTIOUS DISEASES</$button>
<$button class="tile-link"><$action-navigate $to="Pulmonology"/>PULMONOLOGY</$button>
<$button class="tile-link"><$action-navigate $to="Neurology"/>NEUROLOGY</$button>
<$button class="tile-link"><$action-navigate $to="Nephrology"/>NEPHROLOGY</$button>
</center>
Quinolones are a group of antibiotics which work by inhibiting DNA synthesis and are bactericidal in nature. Examples include:
* ciprofloxacin
* levofloxacin
Mechanism of action
* inhibit topoisomerase II (DNA gyrase) and topoisomerase IV
Mechanism of resistance
* mutations to DNA gyrase, efflux pumps which reduce intracellular quinolone concentration
Adverse effects
* lower seizure threshold in patients with epilepsy
* tendon damage (including rupture) - the risk is increased in patients also taking steroids
* cartilage damage has been demonstrated in animal models and for this reason quinolones are generally avoided (but not necessarily contraindicated) in children
* lengthens QT interval
Contraindications
* Quinolones should generally be avoided in women who are pregnant or breastfeeding
* avoid in G6PD
---
>Qui Lone - QT Long
---
>Bones - Tendons - avoided in Kids
>Contra in Moms & G6PD
---
{{Rheumatoid arthritis: ocular manifestations}}
<hr>
{{Rheumatoid arthritis: management}}
<div id="notecontent">Continuation of posterior cord of the brachial plexus (root values C5 to T1)<br><br>Path<br><ul><li>In the axilla: lies posterior to the axillary artery on subscapularis, latissimus dorsi and teres major.</li><li>Enters the arm between the brachial artery and the long head of triceps (medial to humerus).</li><li>Spirals around the posterior surface of the humerus in the groove for the radial nerve.</li><li>At the distal third of the lateral border of the humerus it then pierces the intermuscular septum and descends in front of the lateral epicondyle. </li><li>At the lateral epicondyle it lies deeply between brachialis and brachioradialis where it then divides into a superficial and deep terminal branch.</li><li>Deep branch crosses the supinator to become the posterior interosseous nerve.</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb119b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb119.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Radial nerve" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb119b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">In the image above the relationships of the radial nerve can be appreciated</div><br><b>Regions innervated</b><br><br><div class="table-responsive"><table class="table table-bordered"><tbody><tr><td>Motor (main nerve)</td><td><ul><li>Triceps</li><li>Anconeus</li><li>Brachioradialis</li><li>Extensor carpi radialis</li></ul></td></tr><tr><td>Motor (posterior interosseous branch)</td><td><ul><li>Supinator</li><li>Extensor carpi ulnaris</li><li>Extensor digitorum</li><li>Extensor indicis</li><li>Extensor digiti minimi</li><li>Extensor pollicis longus and brevis</li><li><span class="concept" data-cid="6617">Abductor pollicis longus</span></li></ul></td></tr><tr><td>Sensory</td><td>The area of skin supplying the proximal phalanges on the dorsal aspect of the hand is supplied by the radial nerve (this does not apply to the little finger and part of the ring finger)</td></tr></tbody></table></div> <br><b>Muscular innervation and effect of denervation</b><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Anatomical location</b></th><th><b>Muscle affected</b></th><th><b>Effect of paralysis</b></th></tr></thead><tbody><tr><td>Shoulder</td><td>Long head of triceps</td><td>Minor effects on shoulder stability in abduction</td></tr><tr><td>Arm</td><td>Triceps</td><td>Loss of elbow extension</td></tr><tr><td>Forearm</td><td>Supinator<br>Brachioradialis<br>Extensor carpi radialis longus and brevis</td><td>Weakening of supination of prone hand and elbow flexion in mid prone position</td></tr></tbody></table></div><br>Patterns of damage<br><ul><li><span class="concept" data-cid="8226">wrist drop</span></li><li>sensory loss to small area between the dorsal aspect of the 1st and 2nd metacarpals</li></ul><br>Axillary damage<br><ul><li>as above</li><li>paralysis of triceps</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb052b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb052.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Radial nerve" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb052b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">The cutaneous sensation of the upper limb- illustrating the contribution of the radial nerve</div></div>
* Vesicular rash in the ear canal + BeLL's palsy
* Acyclovir + Prednisolone treatment
<div id="notecontent">Raynaud's phenomena may be primary (Raynaud's disease) or secondary (Raynaud's phenomenon) <br><br>Raynaud's disease typically presents in <span id="concept_popover_id_312" class="concept concept-3-u trigger-link" data-cid="312" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative312'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating312' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(178,255,0)'>Importance: <b>65</b></span> </div>" data-original-title="Raynaud's disease (i.e. primary) presents in young women with bilateral symptoms">young women (e.g. 30 years old) with bilateral symptoms.</span><br><br>Factors suggesting underlying connective tissue disease<br><ul><li>onset after 40 years</li><li>unilateral symptoms</li><li>rashes</li><li>presence of autoantibodies</li><li>features which may suggest rheumatoid arthritis or SLE, for example arthritis or recurrent miscarriages</li><li>digital ulcers, calcinosis</li><li>very rarely: chilblains</li></ul><br>Secondary causes<br><ul><li>connective tissue disorders: scleroderma (most common), rheumatoid arthritis, SLE</li><li>leukaemia</li><li>type I cryoglobulinaemia, cold agglutinins</li><li>use of vibrating tools</li><li>drugs: oral contraceptive pill, ergot</li><li>cervical rib</li></ul><br>Management<br><ul><li>all patients with suspected <span class="concept" data-cid="10240">secondary Raynaud's phenomenon should be referred to secondary care</span></li><li>first-line: calcium channel blockers e.g. <span id="concept_popover_id_8487" class="concept concept-0 trigger-link" data-cid="8487" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8487'>You've never been tested on this concept</div><br><div id='div_concept_rating8487' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(112,255,0)'>Importance: <b>78</b></span> </div>" data-original-title="Nifedipine is a pharmacological option for Raynaud's phenomenon ">nifedipine</span></li><li>IV prostacyclin (<span class="concept" data-cid="2149">epoprostenol</span>) infusions: effects may last several weeks/months</li></ul></div>
!!ECG: Right bundle branch block
is a common feature seen on ECGs.<br><br>
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pda009.png">
</center>
;~WiLLiaM ~MaRRoW
:in LBBB there is a 'W' in V1 and a 'M' in V6
:in RBBB there is a 'M' in V1 and a 'W' in V6
!!!Causes of RBBB
* normal variant - more common with increasing age
* right ventricular hypertrophy
* chronically increased right ventricular pressure - e.g. cor pulmonale
* pulmonary embolism
* myocardial infarction
* atrial septal defect (ostium secundum)
* cardiomyopathy or myocarditis
* Kidney Cancers may present with haematuria, along with loin pain and an abdominal mass, but many are picked up as an incidental finding when investigating for something else.
* Renal function tests are often normal because if the other kidney is functioning normally it will compensate.
* Management is normally radical nephrectomy and radiotherapy or chemotherapy may be needed afterwards.
* The most common site of metastases is to the lungs where "cannon-ball" metastases may be seen on the chest x-ray.
Surfactant deficient lung disease (SDLD, also known as respiratory distress syndrome and previously as hyaline membrane disease) is a condition seen in premature infants. It is caused by insufficient surfactant production and structural immaturity of the lungs
The risk of SDLD decreases with gestation
* 50% of infants born at 26-28 weeks
* 25% of infants born at 30-31 weeks
Other risk factors for SDLD include
* male sex
* diabetic mothers
* Caesarean section
* second born of premature twins
Clinical features are those common to respiratory distress in the newborn, i.e. tachypnoea, intercostal recession, expiratory grunting and cyanosis
Chest x-ray characteristically shows 'ground-glass' appearance with an indistinct heart border
Management
* prevention during pregnancy: maternal corticosteroids to induce fetal lung maturation
* oxygen
* assisted ventilation
* exogenous surfactant given via endotracheal tube
---
* ''Caffiene'' can be used as a respiratory stimulant in newborn babies to facilitate weening off a ventilator.
* ''Sidenafil'' in neonates is used to treat pulmonary hypertension
---
!!!<center>''RECTAL PAIN''</center>
<hr>
* Nature: Duration, consistency of stools, bleeding, fevers?
* Bleeding: Cryptitis, hemorrhoids, anal fissure, proctitis
* No bleeding: Anorectal abscess, anal fistula, anorectal FB, proctalgia fugax, pilonidal dz
* Anal Fissure
* Sitz baths (warm baths 15 min 3×/d), high-fiber diet, lidocaine jelly, topical ANOVATE/SMUTH ointment
* Hemorrhoids
* Syr Cremaffin 3 tsp BD, Sitz baths (15 min TID & after BMs), suppositories for symptomatic relief
* Acute thrombosis (<48 h since onset of pain) can be excised at bedside in ED
* If prolapsed hemorrhoid is incarcerated w/ signs of strangulation, consult surgery
There are many possible causes of a red eye. It is important to be able to recognise the causes which require urgent referral to an ophthalmologist. Below is a brief summary of the key distinguishing features
;Acute angle closure glaucoma
* severe pain (may be ocular or headache)
* decreased visual acuity, patient sees haloes
* semi-dilated pupil
* hazy cornea
;AnteriorUveitis
* acute onset
* pain
* blurred vision and ''photophobia''
* small, fixed oval pupil, ciliary flush
* painful red eye with photophobia, blurred vision and reduced visual acuity.
* The affected pupil is often small and there may be pus in the anterior chamber (a hypopyon) on examination. Patients often have worsening pain on convergence as the pupil constricts.
* Anterior uveitis is associated with seronegative arthropathies such as ankylosing spondylitis in 30% of cases.
* If suspected, patients should be urgently referred to ophthalmology.
;Scleritis
* severe pain (may be worse on movement) and tenderness
* may be underlying autoimmune disease e.g. rheumatoid arthritis
* Scleritis presents as a painful red eye with reduced visual acuity and blurred vision.
* It is associated with systemic illness in 50% of cases such as SLE, rheumatoid arthritis, herpes zoster and other infections.
* Treatment is with steroids and urgent ophthalmology referral
;EpiScleritis
* Episcleritis is a cause of red eye that presents with inflammation in the absence of pain differentiating it from scleritis.
* Treatment is with non-steroidal anti-inflammatories
;Conjunctivitis
* purulent discharge if bacterial, clear discharge if viral
* sticky eyes particularly on waking
;Subconjunctival haemorrhage
* history of trauma or coughing bouts
;Endophthalmitis
* typically red eye, pain and visual loss following intraocular surgery and warrant urgent ophthalmic review
---
Glaucoma Vs. Uveitis?
* glaucoma: severe pain, haloes, 'semi-dilated' pupil
* uveitis: small, fixed oval pupil, ciliary flush
---
!!Reactive arthritis
<div id="body_content">
is one of the HLA-B27 associated seronegative spondyloarthropathies. It encompasses Reiter's syndrome, a term which described a classic triad of urethritis, conjunctivitis and arthritis following a dysenteric illness during the Second World War. Later studies identified patients who developed symptoms following a sexually transmitted infection (post-STI, now sometimes referred to as sexually acquired reactive arthritis, SARA).<br><br>Reactive arthritis is defined as an arthritis that develops following an infection where the organism cannot be recovered from the joint.<br><br>Features<br><ul><li>typically develops within 4 weeks of initial infection - symptoms generally last around 4-6 months</li><li>arthritis is typically an asymmetrical oligoarthritis of lower limbs</li><li>dactylitis</li><li>symptoms of urethritis</li><li>eye: conjunctivitis (seen in 10-30%), anterior uveitis</li><li>skin: circinate balanitis (painless vesicles on the coronal margin of the prepuce), keratoderma blenorrhagica (waxy yellow/brown papules on palms and soles)</li></ul><br>Around 25% of patients have recurrent episodes whilst 10% of patients develop chronic disease<br><br><div class="alert alert-warning">'Can't see, pee or climb a tree'<br></div><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/img037.jpg"></td></tr><tr><td valign="top" align="left"></td><td align="right"></td></tr></tbody></table></center><div class="imagetext">Keratoderma blenorrhagica</div></div>
!!!<center>''RENAL ABSCESS''</center>
<hr>
* Ceftriaxone 1 g IV Q24H OR Clinda 600 IV q8h; PO-II/III gen cefalosporin X2wks/Levoflox 2 wks OR Linezolid 600 PO q12h OR Minocycline 100 BD
!!Renal stones: management
<div id="notecontent">The British Association of Urological Surgeons (BAUS) published guidelines in 2018 on the management of acute ureteric/renal colic.<br><br><b>Initial management of renal colic</b><br><br>Medication<br><ul><li>the BAUS recommend an NSAID as the analgesia of choice for renal colic</li><li>whilst diclofenac has been traditionally used the increased risk of cardiovascular events with certain NSAIDs (e.g. diclofenac, ibuprofen) should be considered when prescribing</li><li>the CKS guidelines suggest for patients who require admission: '<i>Administer a parenteral analgesic (such as <span id="concept_popover_id_1002" class="concept concept-3-u trigger-link" data-cid="1002" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1002'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating1002' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(244,255,0)'>Importance: <b>52</b></span> </div>" data-original-title="Guidelines continue to recommend the use of IM diclofenac in the acute management of renal colic">intramuscular diclofenac</span>) for rapid relief of severe pain</i>'</li><li>BAUS no longer endorse the use of alpha-adrenergic blockers to aid ureteric stone passage routinely. They do however acknowledge a recently published meta-analysis advocates the use of α-blockers for patients amenable to conservative management, with greatest benefit amongst those with larger stones</li></ul><br>Initial investigations<br><ul><li>urine dipstick and culture</li><li>serum creatinine and electrolytes: check renal function</li><li>FBC / CRP: look for associated infection</li><li>calcium/urate: look for underlying causes</li><li>also: clotting if percutaneous intervention planned and blood cultures if pyrexial or other signs of sepsis</li></ul><br>Imaging<br><ul><li>BAUS now recommend that non-contrast CT KUB should be performed on all patients, within 14 hours of admission</li><li>if a patient has a fever, a solitary kidney or when the diagnosis is uncertain an immediate CT KUB should be performed. In the case of an uncertain diagnosis, this is to exclude other diagnoses such as ruptured abdominal aortic aneurysm</li><li>CT KUB has a sensitivity of 97% for ureteric stones and a specificity of 95%</li><li>ultrasound still has a role but given the wider availability of CT now and greater accurary it is no longer recommend first-line. The sensitivity of ultrasound for stones is around 45% and specificity is around 90%</li></ul><br><br><b>Management of renal stones</b><br><br>Stones < 5 mm will usually pass spontaneously. Lithotripsy and nephrolithotomy may be for severe cases.<br><br>Most renal stones measuring less than 5mm in maximum diameter will typically pass within 4 weeks of symptom onset. More intensive and urgent treatment is indicated in the presence of ureteric obstruction, renal developmental abnormality such as horseshoe kidney and previous renal transplant. Ureteric obstruction due to stones together with infection is a surgical emergency and the system must be decompressed. Options include nephrostomy tube placement, insertion of ureteric catheters and ureteric stent placement. <br><br>In the non-emergency setting, the preferred options for treatment of stone disease include extra corporeal shock wave lithotripsy, percutaneous nephrolithotomy, ureteroscopy, open surgery remains an option for selected cases. However, minimally invasive options are the most popular first-line treatment. <br><br>Shockwave lithotripsy<br><ul><li>A shock wave is generated external to the patient, internally cavitation bubbles and mechanical stress lead to stone fragmentation. The passage of shock waves can result in the development of solid organ injury. Fragmentation of larger stones may result in the development of ureteric obstruction. The procedure is uncomfortable for patients and analgesia is required during the procedure and afterwards. </li></ul><br>Ureteroscopy<br><ul><li>A ureteroscope is passed retrograde through the ureter and into the renal pelvis. It is indicated in individuals (e.g. pregnant females) where lithotripsy is contraindicated and in complex stone disease. In most cases a stent is left in situ for 4 weeks after the procedure. </li></ul><br>Percutaneous nephrolithotomy<br><ul><li>In this procedure, access is gained to the renal collecting system. Once access is achieved, intra corporeal lithotripsy or stone fragmentation is performed and stone fragments removed.</li></ul><br><b>Therapeutic selection</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Disease</b></th><th><b>Option</b></th></tr></thead><tbody><tr><td>Stone burden of less than 2cm in aggregate</td><td>Lithotripsy</td></tr><tr><td>Stone burden of less than 2cm in pregnant females</td><td>Ureteroscopy</td></tr><tr><td>Complex renal calculi and staghorn calculi</td><td>Percutaneous nephrolithotomy</td></tr><tr><td>Ureteric calculi less than 5mm</td><td>Manage expectantly</td></tr></tbody></table></div><br><br><b>Prevention of renal stones</b><br><br>Calcium stones may be due to hypercalciuria, which is found in up to 5-10% of the general population. <br><ul><li>high fluid intake</li><li>low animal protein, low salt diet (a low calcium diet has not been shown to be superior to a normocalcaemic diet)</li><li><span class="concept" data-cid="9892">thiazides diuretics</span> (increase distal tubular calcium resorption)</li></ul><br>Oxalate stones<br><ul><li>cholestyramine reduces urinary oxalate secretion</li><li>pyridoxine reduces urinary oxalate secretion</li></ul><br>Uric acid stones<br><ul><li>allopurinol</li><li>urinary alkalinization e.g. oral bicarbonate</li></ul></div>
!!Renal transplant: Immunosuppression
;Example regime
* initial: CicloSporin/tacrolimus with a monoclonal antibody
* maintenance: CicloSporin/tacrolimus with MMF or sirolimus
* add steroids if more than one steroid responsive acute rejection episode
;CicloSporin
* inhibits calcineurin, a phosphotase involved in T cell activation
;Tacrolimus
* lower incidence of acute rejection compared to ciclosporin
* also less hypertension and hyperlipidaemia
* however, high incidence of impaired glucose tolerance and diabetes
;Mycophenolate mofetil (MMF)
* blocks purine synthesis by inhibition of IMPDH
* therefore inhibits proliferation of B and T cells
* side-effects: GI and marrow suppression
;Sirolimus (rapamycin)
* blocks T cell proliferation by blocking the IL-2 receptor
* can cause hyperlipidaemia
;Monoclonal antibodies
* selective inhibitors of IL-2 receptor
* daclizumab
* basilximab
;Monitoring
Patients on long-term immunosuppression for organ transplantation require regular monitoring for complications such as:
* ''Cardiovascular disease'' - tacrolimus and CicloSporin can cause hypertension and hyperglycaemia. Tacrolimus can also cause hyperlipidaemia. Patients must be monitored for accelerated cardiovascular disease.
* ''Renal failure'' - due to nephrotoxic effects of tacrolimus and ciclosporin/graft rejection/recurrence of original disease in transplanted kidney
* ''Malignancy'' - patients should be educated about minimising sun exposure to reduce the risk of squamous cell carcinomas and basal cell carcinomas
!!Respiratory pathogens
<div id="notecontent">The table below lists the more common respiratory pathogens:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Pathogen</b></th><th><b>Associated condition</b></th></tr></thead><tbody><tr><td>Respiratory syncytial virus</td><td>Bronchiolitis</td></tr><tr><td>Parainfluenza virus</td><td>Croup</td></tr><tr><td>Rhinovirus</td><td><span id="concept_popover_id_8738" class="concept concept-3-u trigger-link" data-cid="8738" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8738'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating8738' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="Common cold - rhinovirus">Common cold</span></td></tr><tr><td>Influenza virus</td><td>Flu</td></tr><tr><td><i>Streptococcus pneumoniae</i></td><td>The most common cause of <span id="concept_popover_id_8739" class="concept concept-3-u trigger-link" data-cid="8739" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8739'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating8739' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(112,255,0)'>Importance: <b>78</b></span> </div>" data-original-title="Community-acquired pneumonia - <i>Streptococcus pneumoniae</i>">community-acquired pneumonia</span></td></tr><tr><td><i>Haemophilus influenzae</i></td><td>Community-acquired pneumonia<br>Most common cause of <span id="concept_popover_id_8741" class="concept concept-3-u trigger-link" data-cid="8741" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8741'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating8741' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(112,255,0)'>Importance: <b>78</b></span> </div>" data-original-title="Exacerbation of bronchiectasis - <i>Haemophilus influenzae</i>">bronchiectasis exacerbations</span><br><span id="concept_popover_id_8742" class="concept concept-3-u trigger-link" data-cid="8742" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8742'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating8742' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(173,255,0)'>Importance: <b>66</b></span> </div>" data-original-title="Acute epiglottitis - <i>Haemophilus influenzae</i>">Acute epiglottitis</span></td></tr><tr><td><i>Staphylococcus aureus</i></td><td>Pneumonia, particularly <span class="concept" data-cid="8740">following influenza</span></td></tr><tr><td><i>Mycoplasma pneumoniae</i></td><td>Atypical pneumonia<br><br>Flu-like symptoms classically precede a dry cough. Complications include haemolytic anaemia and erythema multiforme</td></tr><tr><td><i>Legionella pneumophilia</i></td><td>Atypical pneumonia<br><br>Classically spread by air-conditioning systems, causes dry cough. Lymphopenia, deranged liver function tests and hyponatraemia may be seen</td></tr><tr><td>Pneumocystis jiroveci</td><td>Common cause of pneumonia in HIV patients. Typically patients have few chest signs and develop exertional dyspnoea</td></tr><tr><td><i>Mycobacterium tuberculosis</i></td><td>Causes tuberculosis. A wide range of presentations from asymptomatic to disseminated disease are possible. Cough, night sweats and weight loss may be seen</td></tr></tbody></table></div></div>
---
>PARAmilitary COUP
*PARAinfluenza CROUP
---
!!Restless legs syndrome (RLS)
is a syndrome of spontaneous, continuous lower limb movements that may be associated with paraesthesia. It is extremely common, affecting between 2-10% of the general population. Males and females are equally affected and a family history may be present
Clinical features
* uncontrollable urge to move legs (akathisia). Symptoms initially occur at night but as condition progresses may occur during the day. Symptoms are worse at rest
* paraesthesias e.g. 'crawling' or 'throbbing' sensations
* movements during sleep may be noted by the partner - periodic limb movements of sleeps (PLMS)
Causes and associations
* there is a positive family history in 50% of patients with idiopathic RLS
* iron deficiency anaemia
* uraemia
* diabetes mellitus
* pregnancy
The diagnosis is clinical although bloods such as ferritin to exclude iron deficiency anaemia may be appropriate
Management
* simple measures: walking, stretching, massaging affected limbs
* treat any iron deficiency
* dopamine agonists are first-line treatment (e.g. Pramipexole, ropinirole)
* benzodiazepines
* gabapentin
---
>ROLE if RESTLESS
*~RopiniROLE - Pramipexole
!!Retinitis pigmentosa
primarily affects the peripheral retina resulting in tunnel vision
Features
* night blindness is often the initial sign
* tunnel vision due to loss of the peripheral retina (occasionally referred to as funnel vision)
* fundoscopy: black bone spicule-shaped pigmentation in the peripheral retina, mottling of the retinal pigment epithelium
Associated diseases
* Refsum disease: cerebellar ataxia, peripheral neuropathy, deafness, ichthyosis
* Usher syndrome
* abetalipoproteinemia
* Lawrence-Moon-Biedl syndrome
* Kearns-Sayre syndrome
* Alport's syndrome
<center>
<img width=500 src="https://www.dropbox.com/s/7nsj69v8jbztf5c/retinitis1.jpg?raw=1">
</center>
---
>retiNIGHITis - TUNNEL in NIGHT
*NIGHT vision lost first - TUNNEL vision
---
<div id="notecontent">Retinitis pigmentosa primarily affects the peripheral retina resulting in tunnel vision<br><br>Features<br><ul><li>night blindness is often the initial sign</li><li>tunnel vision due to loss of the peripheral retina (occasionally referred to as funnel vision)</li><li>fundoscopy: black bone spicule-shaped pigmentation in the peripheral retina, mottling of the retinal pigment epithelium</li></ul><br>Associated diseases<br><ul><li>Refsum disease: cerebellar ataxia, peripheral neuropathy, deafness, ichthyosis</li><li>Usher syndrome</li><li>abetalipoproteinemia</li><li>Lawrence-Moon-Biedl syndrome</li><li>Kearns-Sayre syndrome</li><li>Alport's syndrome</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb014b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb014.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb014b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Fundus showing changes secondary to retinitis pigmentosa</div></div>
<div id="notecontent">Retinoblastoma is the most common ocular malignancy found in children. The average age of diagnosis is 18 months.<br><br>Pathophysiology<br><ul><li><span class="concept" data-cid="6267">autosomal dominant</span></li><li>caused by a loss of function of the retinoblastoma tumour suppressor gene on chromosome 13</li><li>around 10% of cases are hereditary</li></ul><br>Possible features<br><ul><li><span id="concept_popover_id_2118" class="concept concept-0 trigger-link" data-cid="2118" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2118'>You've never been tested on this concept</div><br><div id='div_concept_rating2118' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(20,255,0)'>Importance: <b>96</b></span> </div>" data-original-title="Lack of red reflex in newborn - think retinoblastoma ">absence of red-reflex</span>, replaced by a white pupil (leukocoria) - the most common presenting symptom</li><li>strabismus</li><li>visual problems</li></ul><br>Management<br><ul><li>enucleation is not the only option</li><li>depending on how advanced the tumour is other options include external beam radiation therapy, chemotherapy and photocoagulation</li></ul><br>Prognosis<br><ul><li>excellent, with > 90% surviving into adulthood</li></ul></div>
<div id="body_content">
<b>Isotretinoin</b><br><br>Isotretinoin is an oral retinoid used in the treatment of severe acne. Two-thirds of patients have a long-term remission or cure following a course of oral isotretinoin.<br><br>Adverse effects<br><ul><li><span class="concept" data-cid="3839">teratogenicity</span>: females should ideally be using two forms of contraception (e.g. Combined oral contraceptive pill and condoms)</li><li>dry skin, eyes and <span class="concept" data-cid="7115">lips/mouth</span>: <span class="concept" data-cid="837">the most common side-effect of isotretinoin</span></li><li><span class="concept" data-cid="7116">low mood</span>*</li><li><span class="concept" data-cid="7117">raised triglycerides</span></li><li><span class="concept" data-cid="7118">hair thinning</span></li><li><span class="concept" data-cid="4712">nose bleeds (caused by dryness of the nasal mucosa)</span></li><li><span class="concept" data-cid="7119">intracranial hypertension</span>: <span class="concept" data-cid="2619">isotretinoin treatment should not be combined with tetracyclines for this reason</span></li><li><span class="concept" data-cid="2221">photosensitivity</span></li></ul><br>*whilst this is a controversial topic, depression and other psychiatric problems are listed in the BNF</div>
`Dry skin is the most common side-effect of isotretinoin`
<$list filter="[tag[Review]sort[title]]"/>
Reye's syndrome is a severe, progressive encephalopathy affecting children that is accompanied by fatty infiltration of the liver, kidneys and pancreas. The aetiology of Reye's syndrome is not fully understood although there is a known association with aspirin use and a viral cause has been postulated
The peak incidence is 2 years of age, features include:
* there may be a history of preceding viral illness
* encephalopathy: confusion, seizures, cerebral oedema, coma
* fatty infiltration of the liver, kidneys and pancreas
* hypoglycaemia
Management is supportive
Although the prognosis has improved over recent years there is still a mortality rate of 15-25%.
<div id="notecontent">Rhabdomyolysis will typically feature in the exam as a patient who has had a fall or prolonged epileptic seizure and is found to have an acute kidney injury on admission.<br><br>Features<br><ul><li>acute kidney injury with disproportionately raised creatinine</li><li><span class="concept" data-cid="2106">elevated creatine kinase (CK)</span></li><li>myoglobinuria</li><li><span id="concept_popover_id_4201" class="concept concept-3-u trigger-link" data-cid="4201" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4201'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating4201' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(214,255,0)'>Importance: <b>58</b></span> </div>" data-original-title="An elderly patient with a raised CK after a long lie should also have their urine checked for myoglobins, and their blood checked for calcium and phosphate">hypocalcaemia (myoglobin binds calcium)</span></li><li><span id="concept_popover_id_4201" class="concept concept-3-u trigger-link" data-cid="4201" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4201'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating4201' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(214,255,0)'>Importance: <b>58</b></span> </div>" data-original-title="An elderly patient with a raised CK after a long lie should also have their urine checked for myoglobins, and their blood checked for calcium and phosphate">elevated phosphate (released from myocytes)</span></li><li><span class="concept" data-cid="9276">hyperkalaemia</span> (may develop before renal failure)</li><li><span class="concept" data-cid="9276">metabolic acidosis</span></li></ul><br>Causes<br><ul><li>seizure</li><li>collapse/coma (e.g. elderly patients collapses at home, found 8 hours later)</li><li>ecstasy</li><li>crush injury</li><li>McArdle's syndrome</li><li>drugs: <span class="concept" data-cid="4172">statins</span> (especially if co-prescribed with <span class="concept" data-cid="2147">clarithromycin</span>)</li></ul><br>Management<br><ul><li><span class="concept" data-cid="5243">IV fluids</span> to maintain good urine output</li><li>urinary alkalinization is sometimes used</li></ul></div>
---
''LABS''
* The hallmark is elevation in CK and other serum muscle enzymes
* The other characteristic finding is the reddish-brown urine of myoglobinuria, but absence does not exclude the diagnosis.
* Routine labs like CBC, ESR, and CRP, vary on etiology
** markedly elevated in infections and crush injuries
** normal or only minimally raised in drug-induced or electrolyte derangements
* ''Creatine kinase'' levels at presentation are usually ''at least five times'' the upper limit of normal, but range from approximately 1500 to over 100,000 international units/L. The mean peak CK reported is 10,000 to 25,000
!!Rhesus negative pregnancy
<div id="notecontent">A basic understanding of the pathophysiology is essential to understand the management of Rhesus negative pregnancies<br><ul><li>along with the ABO system the Rhesus system is the most important antigen found on red blood cells. The D antigen is the most important antigen of the rhesus system</li><li>around 15% of mothers are rhesus negative (Rh -ve)</li><li>if a Rh -ve mother delivers a Rh +ve child a leak of fetal red blood cells may occur</li><li>this causes anti-D IgG antibodies to form in mother</li><li>in later pregnancies these can cross placenta and cause haemolysis in fetus</li><li>this can also occur in the first pregnancy due to leaks</li></ul><br>Prevention<br><ul><li>test for D antibodies in all Rh -ve mothers at booking</li><li>NICE (2008) advise giving anti-D to non-sensitised Rh -ve mothers at 28 and 34 weeks</li><li>the evidence base suggests that there is little difference in the efficacy of single-dose (at 28 weeks) and double-dose regimes (at 28 & 34 weeks). For this reason the RCOG in 2011 advised that either regime could be used 'depending on local factors'</li><li>anti-D is prophylaxis - once sensitization has occurred it is irreversible</li><li>if event is in 2nd/3rd trimester give large dose of anti-D and perform Kleihauer test - determines proportion of fetal RBCs present</li></ul><br>Anti-D immunoglobulin should be given as soon as possible (but always within 72 hours) in the following situations:<br><ul><li>delivery of a Rh +ve infant, whether live or stillborn</li><li>any termination of pregnancy</li><li>miscarriage if gestation is > 12 weeks</li><li>ectopic pregnancy (if managed surgically, if managed medically with methotrexate anti-D is not required)</li><li>external cephalic version</li><li>antepartum haemorrhage</li><li>amniocentesis, chorionic villus sampling, fetal blood sampling</li><li><span class="concept" data-cid="8747">abdominal trauma</span></li></ul><br>Tests<br><ul><li>all babies born to Rh -ve mother should have cord blood taken at delivery for FBC, blood group & direct Coombs test</li><li>Coombs test: direct antiglobulin, will demonstrate antibodies on RBCs of baby</li><li>Kleihauer test: add acid to maternal blood, fetal cells are resistant</li></ul><br>Affected fetus<br><ul><li>oedematous (hydrops fetalis, as liver devoted to RBC production albumin falls)</li><li>jaundice, anaemia, hepatosplenomegaly</li><li>heart failure</li><li>kernicterus</li><li>treatment: transfusions, UV phototherapy</li></ul></div>
!!Rheumatoid Arthritis: Antibodies
;Rheumatoid factor
Rheumatoid factor (RF) is a circulating antibody (usually IgM) which reacts with the Fc portion of the patients own IgG.
RF can be detected by either
* Rose-Waaler test: sheep red cell agglutination
* Latex agglutination test (less specific)
RF is positive in 70-80% of patients with rheumatoid arthritis, high titre levels are associated with severe progressive disease (but NOT a marker of disease activity)
Other conditions associated with a positive RF include:
* Sjogren's syndrome (around 100%)
* Felty's syndrome (around 100%)
* infective endocarditis (= 50%)
* SLE (= 20-30%)
* systemic sclerosis (= 30%)
* general population (= 5%)
* rarely: TB, HBV, EBV, leprosy
;Anti-cyclic citrullinated peptide antibody
Anti-cyclic citrullinated peptide antibody may be detectable up to 10 years before the development of rheumatoid arthritis. It may therefore play a key role in the future of rheumatoid arthritis, allowing early detection of patients suitable for aggressive anti-TNF therapy. `It has a sensitivity similar to rheumatoid factor (around 70%) with a much higher specificity of 90-95%.`
`NICE recommends that patients with suspected rheumatoid arthritis who are rheumatoid factor negative should be test for anti-CCP antibodies.`
!! Management of rheumatoid arthritis(RA)
<div id="body_content">
The management of rheumatoid arthritis (RA) has been revolutionised by the introduction of disease-modifying therapies in the past decade. <br><br>Patients with evidence of joint inflammation should start a combination of disease-modifying drugs (DMARD) as soon as possible. Other important treatment options include analgesia, physiotherapy and surgery.<br><br>Initial therapy<br><ul><li>In 2018 NICE updated their rheumatoid arthritis guidelines. They now recommend DMARD <b>monotherapy</b> +/- a short-course of bridging prednisolone. In the past dual DMARD therapy was advocated as the initial step.</li></ul><br>Monitoring response to treatment<br><ul><li>NICE recommends using a combination of CRP and disease activity (using a composite score such as <span class="concept" data-cid="5830">DAS28</span>) to assess response to treatment</li></ul><br>Flares<br><ul><li><span class="concept" data-cid="2657">flares of RA are often managed with corticosteroids - oral or intramuscular</span></li></ul><br>DMARDs<br><ul><li>methotrexate is the most widely used DMARD. Monitoring of FBC & LFTs is essential due to the risk of myelosuppression and liver cirrhosis. Other important side-effects include pneumonitis</li><li>sulfasalazine</li><li>leflunomide</li><li>hydroxychloroquine</li></ul><br>TNF-inhibitors<br><ul><li>the current indication for a TNF-inhibitor is an inadequate response to at least two DMARDs including methotrexate</li><li>etanercept: recombinant human protein, acts as a decoy receptor for TNF-α, subcutaneous administration, can cause demyelination, risks include <span class="concept" data-cid="855">reactivation of tuberculosis</span></li><li>infliximab: monoclonal antibody, binds to TNF-α and prevents it from binding with TNF receptors, intravenous administration, risks include reactivation of tuberculosis</li><li>adalimumab: monoclonal antibody, subcutaneous administration</li></ul><br>Rituximab<br><ul><li>anti-CD20 monoclonal antibody, results in B-cell depletion</li><li>two 1g intravenous infusions are given two weeks apart</li><li>infusion reactions are common</li></ul><br>Abatacept<br><ul><li>fusion protein that modulates a key signal required for activation of T lymphocytes</li><li>leads to decreased T-cell proliferation and cytokine production</li><li>given as an infusion</li><li>not currently recommend by NICE</li></ul></div>
!!Ocular manifestations
of rheumatoid arthritis are common, with 25% of patients having eye problems
Ocular manifestations
* keratoconjunctivitis sicca (most common)
* EpiScleritis (erythema)
* ScleriTis (erythema and pain)
* corneal ulceration
* keratitis
Iatrogenic
* steroid-induced cataracts
* chloroquine retinopathy
!!Rheumatoid arthritis: drug side-effects
<div id="body_content">
The table below lists some of the characteristic (if not common) side-effects of drugs used to treat rheumatoid arthritis:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Side-effects</b></th></tr></thead><tbody><tr><td>Methotrexate</td><td>Myelosuppression<br>Liver cirrhosis<br>Pneumonitis</td></tr><tr><td>Sulfasalazine</td><td>Rashes<br>Oligospermia<br>Heinz body anaemia<br>Interstitial lung disease</td></tr><tr><td>Leflunomide</td><td>Liver impairment<br>Interstitial lung disease<br>Hypertension</td></tr><tr><td>Hydroxychloroquine</td><td>Retinopathy <br>Corneal deposits</td></tr><tr><td>Prednisolone</td><td>Cushingoid features<br>Osteoporosis<br>Impaired glucose tolerance<br>Hypertension<br>Cataracts</td></tr><tr><td>Gold</td><td>Proteinuria</td></tr><tr><td>Penicillamine</td><td>Proteinuria<br>Exacerbation of myasthenia gravis</td></tr><tr><td>Etanercept</td><td>Demyelination<br>Reactivation of tuberculosis</td></tr><tr><td>Infliximab</td><td>Reactivation of tuberculosis</td></tr><tr><td>Adalimumab</td><td>Reactivation of tuberculosis</td></tr><tr><td>Rituximab</td><td>Infusion reactions are common</td></tr><tr><td>NSAIDs (e.g. naproxen, ibuprofen)</td><td>Bronchospasm in asthmatics<br>Dyspepsia/peptic ulceration</td></tr></tbody></table></div></div>
---
>METALLOPROTEINS
*Metal related drugs(Gold-Pencillamine) cause Proteinuria
---
>MY GRAphite PENCIL
*MYasthenia GRAvis exacerbation - PENCILLamine
---
>hydroxyChloroquine - Corneal deposits
---
>AB cause TB
*infliximAB - adalimumAB - ritumiximAB - Itanercept(also Demyelination)
Riedel's thyroiditis is a rare cause of hypothyroidism characterised by dense fibrous tissue replacing the normal thyroid parenchyma. On examination a hard, fixed, painless goitre is noted. It is usually seen in middle-aged women. It is associated with retroperitoneal fibrosis.
<center><img src="https://www.dropbox.com/s/n0hrhxbu5shpnqv/thyroid.png?raw=1
" width="500"></center>
Venn diagram showing how different causes of thyroid dysfunction may manifest. Note how many causes of hypothyroidism may have an initial thyrotoxic phase.
Ringworm infection (dermatophytosis) can affect the
* scalp (tinea capitis),
* body / skin (tinea corporis),
* groin (tinea cruris), or
* foot (tinea pedis, athlete's foot)
* The imidazole antifungals clotrimazole, econazole, ketoconazole, miconazole, and sulconazole are all effective, as is terbinafine.
Performing both Rinne's and Weber's test allows differentiation of conductive and sensorineural deafness.
Rinne's test
* tuning fork is placed over the mastoid process until the sound is no longer heard, followed by repositioning just over external acoustic meatus
* 'positive test': air conduction (AC) is normally better than bone conduction (BC)
* 'negative test': if BC > AC then conductive deafness
Weber's test
* tuning fork is placed in the middle of the forehead equidistant from the patient's ears
* the patient is then asked which side is loudest
* in unilateral sensorineural deafness, sound is localised to the unaffected side
* in unilateral conductive deafness, sound is localised to the affected side
<div id="body_content">
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Family</b></th><th><b>Structure</b></th><th><b>Envelope</b></th><th><b>Capsid<br>Symmetry</b></th><th><b>Examples</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="6779">Reoviridae</span></td><td><b>Double-stranded</b>, linear</td><td>Naked</td><td>Icosahedral</td><td><span class="concept" data-cid="6792">Reovirus</span>, <span class="concept" data-cid="6793">Rotavirus</span></td></tr><tr><td><span class="concept" data-cid="6780">Picornaviridae</span></td><td>Single-stranded +, linear</td><td>Naked</td><td>Icosahedral</td><td><span class="concept" data-cid="6794">Enterovirus</span>, <span class="concept" data-cid="6795">Rhinovirus</span>, <span class="concept" data-cid="6796">Poliovirus</span>, <span class="concept" data-cid="6797">Coxsackie</span></td></tr><tr><td><span class="concept" data-cid="6781">Caliciviridae</span></td><td>Single-stranded +, linear</td><td>Naked</td><td>Icosahedral</td><td><span class="concept" data-cid="6798">Norwalk virus</span></td></tr><tr><td><span class="concept" data-cid="6782">Togaviridae</span></td><td>Single-stranded +, linear</td><td>Enveloped</td><td>Icosahedral</td><td><span class="concept" data-cid="6799">Rubella virus</span></td></tr><tr><td><span class="concept" data-cid="6783">Arenaviridae</span></td><td>Single-stranded -, circular</td><td>Enveloped</td><td>Helical</td><td><span class="concept" data-cid="6800">Lymphocytic choriomeningitis virus</span></td></tr><tr><td><span class="concept" data-cid="6784">Flaviviridae</span></td><td>Single-stranded +, linear</td><td>Enveloped</td><td>Icosahedral</td><td><span class="concept" data-cid="6801">Dengue virus</span>, <span class="concept" data-cid="6802">Hepatitis C virus</span>, <span class="concept" data-cid="6803">Yellow fever virus</span></td></tr><tr><td><span class="concept" data-cid="6785">Orthomyxoviridae</span></td><td>Single-stranded -, linear</td><td>Enveloped</td><td>Helical</td><td><span class="concept" data-cid="6804">Influenzavirus</span> A, Influenzavirus B, Influenzavirus C,</td></tr><tr><td><span class="concept" data-cid="6786">Paramyxoviridae</span></td><td>Single-stranded -, linear</td><td>Enveloped</td><td>Helical</td><td><span class="concept" data-cid="6805">Measles virus</span>, <span class="concept" data-cid="6806">Mumps virus</span>, <span class="concept" data-cid="6807">Respiratory syncytial virus</span></td></tr><tr><td><span class="concept" data-cid="6787">Bunyaviridae</span></td><td>Single-stranded -, circular</td><td>Enveloped</td><td>Helical</td><td><span class="concept" data-cid="6808">California encephalitis virus</span>, <span class="concept" data-cid="6809">Hantavirus</span></td></tr><tr><td><span class="concept" data-cid="6788">Rhabdoviridae</span></td><td>Single-stranded -, linear</td><td>Enveloped</td><td>Helical</td><td><span class="concept" data-cid="6810">Rabies virus</span></td></tr><tr><td><span class="concept" data-cid="6789">Filoviridae</span></td><td>Single-stranded -, linear</td><td>Enveloped</td><td>Helical</td><td><span class="concept" data-cid="6811">Ebola virus</span>, <span class="concept" data-cid="6812">Marburg virus</span></td></tr><tr><td><span class="concept" data-cid="6790">Coronaviridae</span></td><td>Single-stranded +, linear</td><td>Enveloped</td><td>Helical</td><td>Corona virus</td></tr><tr><td><span class="concept" data-cid="6791">Hepeviridae</span></td><td>Single-stranded +, linear</td><td>Naked</td><td>Icosahedral</td><td><span class="concept" data-cid="6813">Hepatitis E virus</span></td></tr></tbody></table></div></div>
>Reoviridae are the only double-stranded RNA viruses
>CALL PICO and FLAVA. There's a RETRO TOGA party with lots of CORONAs
!!Benign rolandic epilepsy
Rolandic seizures are a form of epilepsy that is often seen in children but will disappear as they reach adolescence. The seizures start around the central sulcus of the brain (located near the rolandic fissure) and usually present with facial symptoms such as` hypersalivation, drooling, loss of speech, facial twitching and numbness of the face or tongue`. The seizures can also spread to other parts of the brain and present with symptoms in other areas. Consciousness usually remains during the seizures but it is possible for the patient to not have any recollection in the post-ictal period.
Benign rolandic epilepsy is a form of childhood epilepsy which typically occurs between the age of 4 and 12 years.
!!!Features
* seizures `characteristically occur at night`
* seizures are typically partial (e.g. paraesthesia affecting face) but secondary generalisation may occur (i.e. parents may only report tonic-clonic movements)
* child is otherwise normal
EEG characteristically shows centro-temporal spikes
Prognosis is excellent, with seizures stopping by adolescence
!!Acne rosacea
is a chronic skin disease of unknown aetiology.
;Features
* typically affects nose, cheeks and forehead
* flushing is often first symptom
* telangiectasia are common
* later develops into persistent erythema with papules and pustules
* rhinophyma
* ocular involvement: blepharitis
* `alcohol and sunlight may exacerbate` symptoms
;Management
* topical metronidazole may be used for mild symptoms (i.e. Limited number of papules and pustules, no plaques)
* topical brimonidine gel may be considered for patients with predominant flushing but limited telangiectasia
* more severe disease is treated with systemic antibiotics e.g. Oxytetracycline
* recommend daily application of a high-factor sunscreen
* camouflage creams may help conceal redness
* laser therapy may be appropriate for patients with prominent telangiectasia
* patients with a rhinophyma should be referred to dermatology
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd033b.jpg">
</center>
<br>
<center>
<img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd034b.jpg">
</center>
<br>
<center><img width=400 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd012b.jpg">
</center>
<center>Image showing a rhinophyma - a late complication of severe rosacea</center>
---
>Mild disease - Low dose Antibiotics - Severe disease - Systemic Antibiotics
>NO STEROIDS
---
>ROSE vs SLE
Roseola infantum (also known as exanthem subitum, occasionally sixth disease) is a common disease of infancy caused by the human herpes virus 6 (HHV6). It has an incubation period of 5-15 days and typically affects children aged 6 months to 2 years.
Features
* high fever: lasting a few days, followed later by a
* maculopapular rash
* Nagayama spots: papular enanthem on the uvula and soft palate
* febrile convulsions occur in around 10-15%
* diarrhoea and cough are also commonly seen
Other possible consequences of HHV6 infection
* aseptic meningitis
* hepatitis
School exclusion is not needed.
---
>Fever RISA - Rash ROSE
*Rising fever followed by Maculopapular Rash
---
!!Rotator cuff injuries
are the most common cause of shoulder problems. A spectrum of disease is recognised:
* Subacromial impingement (also known as impingement syndrome, painful arc syndrome)
* Calcific tendonitis
** In calcific tendinopathy, there may be extreme pain prohibiting examination.
** There is also significant tenderness of palpation
* Rotator cuff tears
** weakness as well as pain
** muscle wasting and tenderness on palpation
* Rotator cuff arthropathy
;Symptoms
* shoulder pain worse on abduction
;Signs
* painful arc of abduction.
** With subacromial impingement, this is typically between 60 and 120 degrees.
** With rotator cuff tears the pain may be in the first 60 degrees.
* tenderness over anterior acromion
---
;DD
* Acromioclavicular degeneration is often associated with popping, swelling, clicking or grindings and a positive scarf test
Safe Prescription Guidelines
<hr>
* Check allergies and body weight
* Antibiotics as per trust policy and review in three days
* Penicillins:
** Anything with CILLIN in the name(AmpiCILLIN, AmoxiCILLIN, FlucloxaCILLIN, etc...)
** Tazocin(Piperacillin-Tazobactum)
** Augmentin(AmoxyCLAV)
* Crossreaction with drugs with Betalactam ring:
**Cephalosporins(Cephalexin, Cefazolin, Ceftrioxone, Cefotaxime, etc...)
** Penems (Meropenem, Carbapenem, Ertapenem)
* Gentamycin
** Adjust dose according to IBW in Obese, needs special calculation if Actual body weight > 120% IBW
** Dose according to CrCl, NOT EGFR
* Levofloxacin in
!!Subarachnoid haemorrhage (SAH)
<div id="body_content">
is an intracranial haemorrhage that is defined as the presence of blood within the subarachnoid space, i.e. deep to the subarachnoid layer of the meninges.<br><br>The most common cause of SAH is head injury and this is called <i> traumatic SAH </i>. In the absence of trauma, SAH is termed <i> spontaneous SAH </i>. The rest of this note focuses on spontaneous SAH.<br><br>Causes of spontaneous SAH include: <br><ul><li>Intracranial aneurysm* (saccular ‘berry’ aneurysms): this accounts for around 85% of cases. Conditions associated with berry aneurysms include <span class="concept" data-cid="8028">adult polycystic kidney disease</span>, <span class="concept" data-cid="5302">Ehlers-Danlos syndrome</span> and coarctation of the aorta</li><li>Arteriovenous malformation</li><li>Pituitary apoplexy</li><li>Arterial dissection</li><li>Mycotic (infective) aneurysms</li><li>Perimesencephalic (an idiopathic venous bleed)</li></ul><br>Classical presenting features include: <br><ul><li>Headache: typically sudden-onset (‘thunderclap’ or ‘baseball bat’), severe (‘worst of my life’) and occipital </li><li>Nausea and vomiting</li><li><span class="concept" data-cid="2771">Meningism</span> (photophobia, neck stiffness)</li><li>Coma</li><li>Seizures</li><li>Sudden death</li><li>ECG changes including <span class="concept" data-cid="2993">ST elevation</span> may be seen</li></ul><br>Confirmation of SAH:<br><ul><li> Computed tomography (CT) head<ul><li>Acute blood (hyperdense/bright on CT) is typically distributed in the basal cisterns, sulci and in severe cases the ventricular system. </li><li>CT is negative for SAH (no blood seen) in 7% of cases.</li></ul></li><li>Lumbar puncture (LP)<ul><li><span class="concept" data-cid="5099">Used to confirm SAH if CT is negative</span>. </li><li>LP is performed at least <span class="concept" data-cid="8027">12 hours</span> following the onset of symptoms to allow the development of <span class="concept" data-cid="1504">xanthochromia (the result of red blood cell breakdown)</span>. </li><li>Xanthochromia helps to distinguish true SAH from a ‘traumatic tap’ (blood introduced by the LP procedure). </li><li><span class="concept" data-cid="10285">As well as xanthochromia, CSF findings consistent with subarachnoid haemorrhage include a normal or raised opening pressure</span></li></ul></li><li><b> Referral to neurosurgery to be made as soon as SAH is confirmed </b></li></ul><br>After spontaneous SAH is confirmed, the aim of investigation is to identify a causative pathology that needs urgent treatment:<br><ul><li><span class="concept" data-cid="1805">CT intracranial angiogram</span> (to identify a vascular lesion e.g. aneurysm or AVM)</li><li>+/- digital subtraction angiogram (catheter angiogram)</li></ul><br>Treatment<br><ul><li>The treatment in spontaneous SAH is in accordance with the causative pathology </li><li>Intracranial aneurysms are at risk of rebleeding and therefore require prompt intervention, preferably within 24 hours</li><li><span class="concept" data-cid="9935">Most intracranial aneurysms are now treated with a coil by interventional neuroradiologists, but a minority require a craniotomy and clipping by a neurosurgeon</span></li><li>Until the aneurysm is treated, the patient should be kept on strict bed rest, well-controlled blood pressure and should avoid straining in order to prevent a re-bleed of the aneurysm</li><li>Vasospasm is prevented using a 21-day course of <span class="concept" data-cid="1804">nimodipine</span> (a calcium channel inhibitor targeting the brain vasculature) and treated with hypervolaemia, induced-hypertension and haemodilution**</li><li>Hydrocephalus is temporarily treated with an external ventricular drain (CSF diverted into a bag at the bedside) or, if required, a long-term ventriculo-peritoneal shunt</li></ul><br>Complications of aneurysmal SAH: <br><ul><li>Re-bleeding (in around 30%)</li><li><span class="concept" data-cid="1190">Vasospasm</span> (also termed delayed cerebral ischaemia), typically 7-14 days after onset</li><li><span class="concept" data-cid="1196">Hyponatraemia</span> (most typically due to syndrome inappropriate anti-diuretic hormone (<span class="concept" data-cid="1438">SIADH</span>))</li><li>Seizures</li><li><span class="concept" data-cid="1439">Hydrocephalus</span></li><li>Death</li></ul><br>Important predictive factors in SAH:<br><ul><li>conscious level on admission</li><li>age</li><li>amount of blood visible on CT head </li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb179b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb179.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb179b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">CT image shows diffuse subarachnoid haemorrhage in all basal cisterns, bilateral sylvian fissures and the inter-hemispheric fissure. This case demonstrates the typical distribution that takes the blood into the subarachnoid space in a subarachnoid hemorrhage.</div><br>*this may be secondary to either autonomic neural stimulation from the hypothalamus or elevated levels of circulating catecholamines<br><br>**the way nimodipine works in subarachnoid haemorrhage is not fully understood. It has been previously postulated that it reduces cerebral vasospasm (hence maintaining cerebral perfusion) but this has not been demonstrated in studies</div>
Salicylate overdose leads to a mixed respiratory alkalosis and metabolic acidosis. Early stimulation of the respiratory centre leads to a respiratory alkalosis whilst later the direct acid effects of salicylates (combined with acute renal failure) may lead to an acidosis. In children metabolic acidosis tends to predominate.
Features
* hyperventilation (centrally stimulates respiration)
* tinnitus
* lethargy
* sweating, pyrexia*
* nausea/vomiting
* hyperglycaemia and hypoglycaemia
* seizures
* coma
Treatment
* general (ABC, charcoal)
* urinary alkalinization with intravenous sodium bicarbonate - enhances elimination of aspirin in the urine
* haemodialysis
Indications for haemodialysis in salicylate overdose
* serum concentration > 700mg/L
* metabolic acidosis resistant to treatment
* acute renal failure
* pulmonary oedema
* seizures
* coma
*salicylates cause the uncoupling of oxidative phosphorylation leading to decreased adenosine triphosphate production, increased oxygen consumption and increased carbon dioxide and heat production
<div id="notecontent">3 pairs<br><ul><li>parotid (serous) - most tumours</li><li>submandibular (mixed) - most stones</li><li>sublingual (mucous)</li></ul><br>Pathology<br><ul><li>tumours: '80% parotid, 80% of these = pleomorphic adenomas, 80% superficial lobe</li><li>malignant rare: short hx, painful, hot skin, hard, fixation, CN VII involvement</li></ul><br>Pleomorphic adenomas (benign, 'mixed parotid tumour', 80%)<br><ul><li>middle age</li><li>slow growing, painless lump</li><li>superficial parotidectomy; risk = CN VII damage</li></ul><br>Warthin's tumour (benign, 'adenolymphomas', 10%)<br><ul><li>males, middle age</li><li>softer, more mobile and fluctuant (although difficult to differentiate)</li></ul><br>Stones<br><ul><li>recurrent unilateral pain & swelling on eating</li><li>may become infected → Ludwig's angina</li><li>80% are submandibular</li><li>plain x-rays; sialography</li><li>surgical removal</li></ul><br>Other causes of enlargement<br><ul><li>acute viral infection e.g. mumps</li><li>acute bacterial infection e.g. 2nd to dehydration diabetes</li><li>sicca syndrome and Sjogren's (e.g. RA)</li></ul></div>
Sarcoidosis is a multisystem disorder of unknown aetiology characterised by non-caseating granulomas. It is more common in young adults and in people of African descent
Features
* acute: ErythemaNodosum, bilateral hilar lymphadenopathy, swinging fever, polyarthralgia
* insidious: dyspnoea, non-productive cough, malaise, weight loss
* skin: lupus pernio
* HyperCalcemia: macrophages inside the granulomas cause an increased conversion of vitamin D to its active form (1,25-dihydroxycholecalciferol)
;Syndromes associated with sarcoidosis
''Lofgren's syndrome'' is an acute form of the disease characterised by bilateral hilar lymphadenopathy (BHL), erythema nodosum, fever and polyarthralgia. It usually carries an excellent prognosis
In ''Mikulicz syndrome''* there is enlargement of the parotid and lacrimal glands due to sarcoidosis, tuberculosis or lymphoma
''Heerfordt's syndrome'' (uveoparotid fever) there is parotid enlargement, fever and uveitis secondary to sarcoidosis
*this term is now considered outdated and unhelpful by many as there is a confusing overlap with Sjogren's syndrome
---
`Black Female - SOB - NO wheeze - Hilar Lymphadenopathy(in 90%) - RED eyes (Iritis/Uveitis) - RED painful lesions on shins (ErythemaNodosum) - Parotid Enlargement - Facial Palsy - HyperCalcemia(in 50%) - ↑ACE (HTN) - ♥Block - Restrictive♥Myopathy `
>Sir! a BLACK with RED DROOPING EYES stole GRAIN in HEB
*Gammaglobulinemia-Rheu Arthritis/Red eyes-↑ACE-Interstitial fibrosis-Noncaseating granulomas-Black Female - HyperCalcemia(macrophage) - ErythemaNodosum - Bell's palsy
*labs BIT CXR - MAT Biopsy of Lymph Nodes (Non Caseating Granulomas)
*℞ Steroids (Prednisone) - Asymptomatic disease doesn't need treatment for it's high rate of Remission
*Xray Chest Mediastinal Lymphadenopathy with Inflammatory Noncaseating Granulomas & Reticular Opacities
<center>
<img width=400 src="https://www.dropbox.com/s/wtrfqky6x2xsg8p/hilarlymph.png?raw=1">
</center>
---
>DDs
* HISToplasmosis - YEAST forms
* TB - Caseating Granulomas - other Xray findings
* Hodgkin's - Both Painless peripheral & Hilar Lymphadenopathy - Reedsternberg cells
* Sarcoidosis - Non Caseating Granulomas - Only Hilar lymph nodes
---
Spontaneous bacterial peritonitis (SBP) is a form of peritonitis usually seen in patients with ascites secondary to liver cirrhosis.
Features
* ascites
* abdominal pain
* fever
Diagnosis
* paracentesis: neutrophil count > 250 cells/ul
* the most common organism found on ascitic fluid culture is E. coli
Management
* intravenous cefotaxime is usually given
Antibiotic prophylaxis should be given to patients with ascites if:
* patients who have had an episode of SBP
* patients with fluid protein <15 g/l and either Child-Pugh score of at least 9 or hepatorenal syndrome
`NICE recommend: Offer prophylactic oral ciprofloxacin or norfloxacin for people with cirrhosis and ascites with an ascitic protein of 15 g/litre or less until the ascites has resolved`
Alcoholic liver disease is a marker of poor prognosis in SBP.
<div id="notecontent">Scarlet fever is a reaction to erythrogenic toxins produced by Group A haemolytic streptococci (usually <i>Streptococcus pyogenes</i>). It is more common in children aged 2 - 6 years with the peak incidence being at 4 years.<br><br>Scarlet fever is spread via the respiratory route by inhaling or ingesting respiratory droplets or by direct contact with nose and throat discharges, (especially during sneezing and coughing).<br><br>Scarlet fever has an incubation period of 2-4 days and typically presents with:<br><ul><li>fever: typically lasts 24 to 48 hours</li><li>malaise, headache, nausea/vomiting</li><li>sore throat</li><li>'strawberry' tongue</li><li>rash<ul><li>fine punctate erythema ('pinhead') which generally appears first on the torso and spares the palms and soles</li><li>children often have a flushed appearance with circumoral pallor. The rash is often more obvious in the flexures</li><li>it is often described as having a <span class="concept" data-cid="3593">rough 'sandpaper' texture</span></li><li>desquamination occurs later in the course of the illness, particularly around the fingers and toes</li></ul></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd137b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd137.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd137b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Diagnosis<br><ul><li>a throat swab is normally taken but antibiotic treatment should be commenced immediately, rather than waiting for the results</li></ul><br>Management<br><ul><li><span class="concept" data-cid="5058">oral penicillin V for 10 days</span></li><li>patients who have a <span class="concept" data-cid="5059">penicillin allergy should be given azithromycin</span></li><li><span class="concept" data-cid="1125">children can return to school 24 hours after commencing antibiotics</span></li><li>scarlet fever is a <span class="concept" data-cid="1157">notifiable disease</span></li></ul><br>Scarlet fever is usually a mild illness but may be complicated by:<br><ul><li>otitis media: the most common complication</li><li>rheumatic fever: typically occurs 20 days after infection</li><li>acute <span class="concept" data-cid="10738">glomerulonephritis</span>: typically occurs 10 days after infection</li><li>invasive complications (e.g. bacteraemia, meningitis, necrotizing fasciitis) are rare but may present acutely with life-threatening illness</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb015b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb015.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Scarlet fever" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb015b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
<div id="notecontent">Squamous cell carcinoma is a common variant of skin cancer. Metastases are rare but may occur in 2-5% of patients.<br><br>Risk factors include:<br><ul><li>excessive exposure to sunlight / psoralen UVA therapy</li><li>actinic keratoses and Bowen's disease</li><li>immunosuppression e.g. following <span class="concept" data-cid="2441">renal transplant</span>, HIV</li><li>smoking</li><li>long-standing leg ulcers (Marjolin's ulcer)</li><li>genetic conditions e.g. xeroderma pigmentosum, oculocutaneous albinism</li></ul><br><b>Image gallery</b><br><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx130.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx127.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddx131.jpg"></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd132b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd132.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd132b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd128b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd128.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd128b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd126b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd126.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd126b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><b>Treatment</b><br><br>Surgical excision with 4mm margins if lesion <20mm in diameter. If tumour >20mm then margins should be 6mm. Mohs micrographic surgery may be used in high-risk patients and in cosmetically important sites.<br><br><b>Prognosis</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Good Prognosis</b></th><th><b>Poor prognosis</b></th></tr></thead><tbody><tr><td>Well differentiated tumours</td><td>Poorly differentiated tumours</td></tr><tr><td><20mm diameter</td><td>>20mm in diameter</td></tr><tr><td><2mm deep</td><td>>4mm deep</td></tr><tr><td>No associated diseases</td><td>Immunosupression for whatever reason</td></tr></tbody></table></div></div>
<div id="body_content">
Schistosomiasis, or bilharzia, is a parasitic flatworm infection. The three main species of schistosome are S. mansoni, S. japonicum and S. haematobium. <br><br><br><b>Acute infections</b><br><br>Acute symptoms typically only develop in people who travel to endemic areas, as they don't have any immunity to the worms.<br><br>Acute manifestations may include:<br><ul><li>swimmers' itch</li><li><span class="concept" data-cid="2724">acute schistosomiasis syndrome (Katayama fever)</span><ul><li>fever</li><li>urticaria/angioedema</li><li>arthralgia/myalgia</li><li>cough</li><li>diarrhoea</li><li><span class="concept" data-cid="7268">eosinophilia</span></li></ul></li></ul><br><br><b>Chronic infections</b><br><br><br><span class="concept" data-cid="948"><b>Schistosoma haematobium</b></span><br><br>These worms deposit egg clusters (pseudopapillomas) in the bladder, causing inflammation. The calcification seen on x-ray is actually calcification of the egg clusters, not the bladder itself.<br><br>Depending on the site of these pseudopapillomas in the bladder, they can cause an obstructive uropathy and kidney damage.<br><br>This typically presents as a 'swimmer's itch' in patients who have recently returned from Africa. Schistosoma haematobium is a risk factor for <span class="concept" data-cid="949">squamous cell bladder cancer</span>.<br><br>Features<br><ul><li>frequency</li><li>haematuria</li><li><span class="concept" data-cid="10007">bladder calcification</span></li></ul><br>Management<br><ul><li>single oral dose of <span class="concept" data-cid="9143">praziquantel</span></li></ul><br><br><b>Schistosoma mansoni and Schistosoma japonicum</b><br><br>These worms mature in the liver and then travel through the portal system to inhabit the distal colon. Their presence in the portal system can lead to progressive hepatomegaly and splenomegaly due to portal vein congestion.<br><br>These species can also lead to complications of liver cirrhosis, variceal disease and cor pulmonale.<br><br><br><b>Schistosoma intercalatum and Schistosoma mekongi</b><br><br>These are less prevalent than the other three forms, but are both attributed to intestinal schistosomiasis.</div>
NICE published guidelines on the management of schizophrenia in 2009.
Key points:
* oral AtypicalAntiPsychotic are first-line
* cognitive behavioural therapy should be offered to all patients
* close attention should be paid to cardiovascular risk-factor modification due to the high rates of cardiovascular disease in schizophrenic patients (linked to antipsychotic medication and high smoking rates)
---
;Treatment resistant schizophrenia
as the name suggests, is notoriously difficult to control. One of the most effective drugs is called clozapine, an AtypicalAntiPsychotic.
This is not a first line medication and should only be initiated if there is a lack of clinical improvement following sequential use of at least two antipsychotics for 6-8 weeks, with at least one of these antipsychotics being from the atypical class.
Whilst a very effective medication, there are a number of serious side effects including, but not limited to, the following:
* weight gain
* excessive salivation
* agranulocytosis
* neutropenia
* myocarditis
* arrhythmias
---
;Morbidity and Mortality
* Schizophrenics are around 50x more likely than the general population to attempt ''suicide'' and around 50% of individuals with schizophrenia attempt suicide at some point in their lives.
* Other causes of mortality in schizophrenia include ''cardiovascular disease'' which occurs secondary to antipsychotic medication and also poor lifestyle choices such as smoking, alcohol use, unhealthy diet and lack of exercise all of which are more common in schizophrenics than in the general population.
* Additionally schizophrenics are more likely to indulge in risky sexual practices than the general population and therefore have an ''increased incidence of sexually transmitted infections''. As well as this physical illness in schizophrenics is often diagnosed late and treated insufficiently.
Basics
* sciatic nerve is supplied by L4-5, S1-3
* divides into tibial and common peroneal nerves
Supplies
* hamstring muscles
* adductor muscles
Features of sciatic nerve lesion
* motor: paralysis of knee flexion and all movements below knee
* sensory: loss below knee
* reflexes: ankle + plantar lost, knee jerk intact
Causes
* fracture neck of femur
* posterior hip dislocation
* trauma
!!!<center>''SCROTAL PAIN ACUTE''</center>
<hr>
* MCC: acute epididymitis and testicular torsion.
* Others: Fournier's gangrene (necrotizing fasciitis of the perineum), torsion of the appendix testis, trauma, post-vasectomy pain, inguinal hernia, mumps orchitis, testicular cancer, immunoglobulin A (IgA) vasculitis (Henoch-Schönlein purpura), referred pain, and acute idiopathic scrotal edema.
* Rule out testicular torsion and Fournier's gangrene
* The initial evaluation of acute scrotal pain includes a directed history and physical examination. Patients should be asked about the nature and timing of the onset of pain, its location, and the presence of lower urinary tract symptoms (eg, frequency, urgency, dysuria) and constitutional symptoms (eg, fever, chills). The abdomen, inguinal region, and scrotal skin and contents should be carefully examined
* A urinalysis and urine culture, as well as diagnostic studies for Neisseria gonorrhoeae and Chlamydia trachomatis should be obtained if the diagnosis of acute epididymitis is being considered or if lower urinary tract symptoms are present.
* Acute epididymitis: localized testicular pain with tenderness and swelling on palpation of the affected epididymis, which is located posteriorly on the testis
* In patients <35 yrs or who are at risk of sexually transmitted infections, we suggest coverage for N. gonorrhoeae and C. trachomatis
* Inj Ceftriaxone 250 mg IM STATplus doxycycline 100 mg BD for 10 days or
* Tab Cefixime 400 mg STAT + Azithro 1 gm STAT
* In patients >35 yrs or older and who are at low risk for sexually transmitted infections: Levofloxacin 500 mg OD for 10 days or ofloxacin 200 mg BD for 10 days is an acceptable regimen.
* Testicular torsion: acute onset of moderate to severe testicular pain with profound diffuse tenderness and swelling and a negative cremasteric reflex on physical examination.
* Doppler ultrasound of the scrotum is a useful adjunct in equivocal cases but should not delay surgical exploration.
* Urgent surgical exploration is the standard of care for testicular torsion.
* For patients who cannot be taken to surgery within two hours, an attempt at manual detorsion is warranted
* Fournier's gangrene: tense edema outside the involved skin, blisters/bullae, crepitus, and subcutaneous gas, as well as systemic findings such as fever, tachycardia, and hypotension.
* Management of necrotizing fasciitis consists of early aggressive surgical debridement, broad spectrum antibiotic therapy, and hemodynamic support as needed.
<div id="notecontent"><b>Epididymal cysts</b><br><br>Epididymal cysts are the most common cause of scrotal swellings seen in primary care. <br><br>Features<br><ul><li>separate from the body of the testicle</li><li>found posterior to the testicle</li></ul><br>Associated conditions<br><ul><li>polycystic kidney disease </li><li>cystic fibrosis</li><li>von Hippel-Lindau syndrome</li></ul><br>Diagnosis may be confirmed by ultrasound.<br><br>Management is usually supportive but surgical removal or sclerotherapy may be attempted for larger or symptomatic cysts.<br><br><b>Hydrocele</b><br><br>A hydrocele describes the accumulation of fluid within the tunica vaginalis. They can be divided into communicating and non-communicating:<br><ul><li>communicating: caused by patency of the processus vaginalis allowing peritoneal fluid to drain down into the scrotum. Communicating hydroceles are common in newborn males (clinically apparent in 5-10%) and usually resolve within the first few months of life</li><li>non-communicating: caused by excessive fluid production within the tunica vaginalis</li></ul><br>Hydroceles may develop secondary to:<br><ul><li>epididymo-orchitis</li><li>testicular torsion</li><li>testicular tumours</li></ul><br>Features<br><ul><li>soft, non-tender swelling of the hemi-scrotum. Usually anterior to and below the testicle</li><li>the swelling is confined to the scrotum, you can get 'above' the mass on examination</li><li>transilluminates with a pen torch</li><li>the testis may be difficult to palpate if the hydrocele is large</li></ul><br>Diagnosis may be clinical but ultrasound is required if there is any doubt about the diagnosis or if the underlying testis cannot be palpated.<br><br>Management<br><ul><li>infantile hydroceles are generally repaired if they do not resolve spontaneously by the age of 1-2 years</li><li>in adults a conservative approach may be taken depending on the severity of the presentation. Further investigation (e.g. ultrasound) is usually warranted however to exclude any underlying cause such as a tumour</li></ul><br><b>Varicocele</b><br><br>A varicocele is an abnormal enlargement of the testicular veins. They are usually asymptomatic but may be important as they are associated with infertility. <br><br>Varicoceles are much more common on the left side (> 80%). Features:<br><ul><li>classically described as a 'bag of worms'</li><li>subfertility</li></ul><br>Diagnosis<br><ul><li>ultrasound with Doppler studies</li></ul><br>Management<br><ul><li>usually conservative</li><li>occasionally surgery is required if the patient is troubled by pain. There is ongoing debate regarding the effectiveness of surgery to treat infertility</li></ul></div>
{{$:/core/ui/SideBarSegments/search}}
Seborrhoeic dermatitis in adults is a chronic dermatitis thought to be caused by an inflammatory reaction related to a proliferation of a normal skin inhabitant, a fungus called Malassezia furfur (formerly known as Pityrosporum ovale). It is common, affecting around 2% of the general population.
Features
* `eczematous lesions on the sebum-rich areas: scalp (may cause dandruff), periorbital, auricular and nasolabial folds`
* otitis externa and blepharitis may develop
Associated conditions include
* HIV
* Parkinson's disease
Scalp disease management
* over the counter preparations containing zinc pyrithione ('Head & Shoulders') and tar ('Neutrogena T/Gel') are first-line
* the preferred second-line agent is ketoconazole
* selenium sulphide and topical corticosteroid may also be useful
Face and body management
* topical antifungals: e.g. ketoconazole
* topical steroids: best used for short periods
* difficult to treat - recurrences are common
---
!!Children
Seborrhoeic dermatitis is a relatively common skin disorder seen in children. It typically affects the `scalp ('Cradle cap'), nappy area, face and limb flexures`.
Cradle cap is an early sign which may develop in the first few weeks of life. It is characterised by an `erythematous rash with coarse yellow scales.`
Management depends on severity
* mild-moderate: baby shampoo and baby oils
* severe: mild topical steroids e.g. 1% hydrocortisone
Seborrhoeic dermatitis in children tends to resolve spontaneously by around 8 months of age
---
<div id="notecontent">Seborrhoeic keratoses are benign epidermal skin lesions seen in older people.<br><br>Features<br><ul><li>large variation in colour from flesh to light-brown to black</li><li>have a 'stuck-on' appearance</li><li>keratotic plugs may be seen on the surface</li></ul><br>Management<br><ul><li>reassurance about the benign nature of the lesion is an option</li><li>options for removal include curettage, cryosurgery and shave biopsy</li></ul><br><b>Image gallery</b><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd016b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd016.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd016b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd017b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd017.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd017b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd018b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd018.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd018b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
!!!<center>''SECONDARY PERITONITIS (GI PERFORATION)''</center>
<hr>
* Mild/Mod: Amp 2 IV Q6H + Gent + Metro 500 IV Q8H OR Cipro 400 IV Q12H + Metro 500 IV Q8H;
* Severe: Pip/taz 4.5 IV Q8H OR Cipro 400 IV Q12H + Metro 500 IV Q8H OR Cefoperazone-sulb 3 gm IV q12h OR Mero 1gm IV q8h; For yeast coverage: Flucon IV 800 mg load then 400 OD
!!!<center>''SEIZURES''</center>
<hr>
//A 65-year-old man experiences a seizure-like episode the day after being admitted for a fractured hip.//
* Immediate Questions
* Did the patient have an epileptic seizure, or could something else have happened to explain this behavioral change? The most common cause of a loss or alteration of consciousness is not an epileptic seizure.
* Disorders that may be confused with an epileptic seizure include syncope (as a result of orthostatic hypotension, arrhythmia, valvular heart disease, or vasovagal syncope), transient ischemic attack, transient global amnesia, decorticate posturing from increased intracranial pressure, sleep disorder, confusional episode associated with migraine headache, hypoglycemia, panic attack or fugue state, neuroleptic malignant syndrome, and a psychogenic seizure.
* A detailed history from the patient and a reliable witness usually help to distinguish an epileptic seizure from other disorders.
* What type of epileptic seizure did the patient experience?
* Seizures are classified according to whether they are generalized or focal in onset
* Was the seizure symptomatic or idiopathic?
* Idiopathic seizures have no known cause and account for 50% of all cases.
* Symptomatic seizures indicate that the seizure is a symptom of another disorder that affects the central nervous system
* Does the patient have a history of previous epileptic seizures?
* If the patient were taking an anticonvulsant before admission, the drug may have been discontinued, taken irregularly or not at all
* The most common cause of recurrent seizures in a patient previously well controlled is poor compliance.
* Does the patient have a history of alcohol or drug abuse?
* Additional causes of epileptic seizures such as meningitis, head injury, electrolyte abnormalities, hypoglycemia, and thiamine deficiency should be considered when seizures occur in the setting of alcohol and drug abuse.
* Head trauma?
* Meningitis or encephalitis; cerebral abscess?
* Stroke. A common cause of epileptic seizures in the elderly.
* Carcinoma. Epileptic seizures may be the presenting symptom in a primary or metastatic brain tumor.
* Alzheimer’s disease is associated with a high risk of seizures, which are usually myoclonic but can be generalized tonic-clonic seizures.
* Metabolic or toxic disorders. Hypoglycemia, hyponatremia, hypocalcemia, hypomagnesemia, hypophosphatemia, uremia, severe alkalosis or acidosis, hepatic failure, and possibly hyperkalemia
* Nonepileptic psychogenic seizures. Caused by malingering or a conversion disorder, psychogenic seizures (or pseudoseizures) may be difficult to distinguish from an epileptic seizure.
* The blood pressure is often normal after a seizure, but hypotension in an elderly person may signal a recent myocardial infarction due to the profound muscular exertion accompanying a generalized tonic-clonic seizure.
* Hypertension may suggest a cause of the seizure, such as hypertensive encephalopathy, toxemia, or a recent stroke.
* A deeply bitten and bleeding tongue is strongly associated with generalized tonic-clonic seizures
* Heart and lungs. A cardiac dysrhythmia or valvular abnormality could suggest syncope rather than an epileptic seizure.
* Urinary or stool incontinence may occur with an epileptic seizure,
* A detailed neurologic examination is necessary to identify the location of the lesion within the CNS, which may be the source of the epileptic seizure.
* Serum glucose and electrolytes. Rule out hypoglycemia, hypocalcemia, and hyponatremia or a hyperosmolar state due to hyperglycemia or hyponatremia.
* Renal profile and creatine phosphokinase. Rule out acute or chronic renal failure.
* CBC, ABG to rule out hypoxemia or acidosis, LP if needed
* CT or MRI brain scan. A neuroimaging study should be performed on all patients who present with new-onset seizures and in whom no other cause of seizure is apparent.
* Lumbar puncture. It should be done immediately if meningitis, encephalitis, or meningeal carcinomatosis is suspected, or if there is clinical suspicion for a subarachnoid hemorrhage not revealed by neuroimaging.
* Electroencephalogram (EEG). Usually not necessary as an emergency procedure.
* CXR and ECG. Helpful if aspiration pneumonia, noncardiogenic pulmonary edema, or an acute myocardial infarction is suspected as a complication of the epileptic seizure.
* Support ABC
* Place the patient in a lateral decubitus position with a suction device to prevent aspiration if vomiting occurs.
* Move objects away from the patient or place padding between the patient and the floor or other immovable items. Do not place objects in the patient’s mouth or try to force the mouth open because these measures are unnecessary and may lead to injury to the patient or yourself.
* Seizure control.
* Most seizures are self-limited, last no more than 2–3 minutes, and may not need immediate treatment until a detailed evaluation is completed.
* In clinical practice, a generalized tonic-clonic seizure lasting more than 5–10 minutes or two generalized tonic-clonic seizures occurring in quick succession without the patient fully recovering between seizures should be treated as status epilepticus.
* Check RBS; give IV dextrose if low
* Inj Lorazepam 0.1 mg/kg at 1–2 mg/min IV, and repeat, if necessary, in 15 minutes (maximum dose 0.2 mg/kg or 5–10 mg total
* Diazepam may also be used at doses of 5–10 mg at 1–2 mg/min IV, and repeated, if necessary, in 15 minutes (maximum dose 20–40 mg).
* However, lorazepam may be preferred because of its longer effect.
* If the patient is in status epilepticus but not in an active seizure, phenytoin can be given to prevent further seizures by loading intravenously with 15–20 mg/kg at
* Another option would be to load with IV valproate at doses of 15–20 mg/kg at 1.5–3 mg/kg/min.
* Phenobarbital with a loading dose of 10–20 mg/kg at 50–100 mg/min IV (maximum dose of 1.5–2 g) may be added if seizures recur with maximal doses of phenytoin or valproate.
* Midazolam may be given IM at a dose of 0.07–0.08 mg/kg (approximately 5 mg), or fosphenytoin can be given IM at a dose of 15–20 mg/kg.
* The loading dose for pentobarbital is 15–20 mg/kg IV at 25–50 mg/min. Additional doses of 25–50 mg every 2–5 minutes may be given
* Other options for refractory status include IV midazolam 0.2 mg/kg bolus, maintained at 0.75–10 μg m/kg/min; or IV propofol 1–2 mg/kg bolus, maintained at 2–10 mg/kg/hr. Continuous EEG monitoring is maintained
* throughout the pentobarbital coma to identify development of subclinical status epilepticus.
* Complications from generalized tonic-clonic status include acute myocardial infarction, rhabdomyolysis, acute renal failure, aspiration pneumonia, pulmonary edema, hyperkalemia, severe acidosis, compression fractures, and trauma.
* These complications should be anticipated, closely monitored, and treated early to minimize their effects.
<div id="notecontent">Most seizures are self-limiting and stop spontaneously but prolonged seizures may be potentially life-threatening.<br><br>Basics<br><ul><li>check the airway and apply oxygen if appropriate</li><li>place the patient in the recovery position</li><li>if the seizure is prolonged give benzodiazepines</li></ul><br>BNF recommend dose for rectal diazepam, repeated once after 10-15 minutes if necessary<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Neonate</th><th>1.25 - 2.5 mg</th></tr></thead><tbody><tr><td>Child 1 month - 1 year</td><td>5 mg</td></tr><tr><td>Child 2 years - 11 years</td><td>5 - 10 mg</td></tr><tr><td>Child 12 years - 17 years</td><td>10 mg</td></tr><tr><td>Adult</td><td>10 - 20 mg (max. 30 mg)</td></tr><tr><td>Elderly</td><td>10 mg (max. 15 mg)</td></tr></tbody></table></div><br>Midazolam oromucosal solution may also be used:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Neonate</th><th>300 mcg/kg (unlicensced)</th></tr></thead><tbody><tr><td>Child 1 - 2 months</td><td>300 mcg/kg (max. 2.5mg, unlicensced)</td></tr><tr><td>Child 3 - 11 months</td><td>2.5 mg</td></tr><tr><td>Child 1 - 4 years</td><td>5 mg</td></tr><tr><td>Child 5 - 9 years</td><td>7.5 mg</td></tr><tr><td>Child 10 - 17 years</td><td>10 mg</td></tr><tr><td>Adult</td><td>10 mg (unlicensced)</td></tr></tbody></table></div></div>
---
!!!<center>''SEIZURES/STATUS EPILEPTICUS PROTOCOL''</center>
<hr>
* If actively seizing:
* Immediate IV access
* roll patient into decubitus (avoid aspiration),
* Suction airway,
* Supplemental O2
* Fingerstick glucose
* Magnesium (if pregnant)
* Antiepileptic agents (IV, IO, IM, IN)
* Intubation if needed
* Cardiac monitor
* Inj 25% Dextrose 100 ml IV if hypoglycemia
* Inj Thiamine 100 mg IV STAT if alcoholic
* Step 1:
* Inj Lorazepam 2–4 mg (0.1 mg/kg), repeat q5–10min if sz persists OR
* Inj Diazepam 5–10 mg (0.2 mg/kg), repeat q5–10min if sz persists OR
* Inj Midazolam 5–10 mg (0.2 mg/kg), repeat q5–10min if sz persists
* Step 2:
* Phenytoin 1–1.5 g (10–15 mg/kg) over 20 min OR
* Valproic acid 25–45 mg/kg (absence sz)
* Levetiracetam 1–1.5 g IV
* Step 3
* Phenobarbital 200–600 mg slow push, then 10–20 mg/kg if no resolution
* Step 4
* General anesthesia w/ propofol, midazolam, or pentobarbital ± paralytics
* inj Midaz 0.2 mg/kg bolus and start infusion @ 0.1 mg/kg/hr
* Inj Propofol 1-2 mg/kg IV STAT over 5 min then infusion
* Inj Phenobarb 5mg/kg IV over 5 min then 1-5 m/kg/hr
* Special cases w/ alternative 1st-line tx: Pregnant (Mg 4g IV), INH tox (pyridoxine 1g)
* First-time Sz & back to baseline: get CBC, KFT, HCG; LP if needed.
* Obtain noncontrast CT in ED if feasible
* May defer neuroimaging to o/p if: Age <40 y, normal neuro exam, no concern for intracranial path (no trauma, no hx malignancy or immunosupp, no fever, no HA, no A/C use), & good o/p f/u;
* Preferred o/p study is MRI w/contrast
* MRI w/contrast > CT for evaluation of tumors (esp in elderly, hx cancer), but can be done as o/p in most pts if CT negative
* EEG: May be performed as outpt; indicated only for persistent AMS, SE, dx of viral encephalitis, intubated/paralyzed, r/o nonconvulsive SE
* Breakthrough sz:
* Check Electrolytes, UA, AED levels, ± CXR; ± lactate
* Neuroimaging: Consider if different from prior sz, prolonged duration since recent sz, trauma, or other c/f intracranial pathology
* First-time sz (provoked or unprovoked): No AED indicated if back to baseline mental status, no current or known h/o structural brain disease/injury
* If h/o sz d/o & ↓ AED levels, load w/ AED (PO or IV; home agent preferred)
* If h/o sz d/o & nl AED levels (& no clear provoking trigger): Contact o/p prescriber to discuss ↑ o/p AED dose
* Provoked sz: Disposition depends on underlying cause; if underlying cause cannot be rapidly reversed & pt remains at risk for recurrent provoked sz, admx vs. observation
* Unprovoked sz: Most can be safely discharged w/ close neuro f/u if nl mental status exam, & w/u (above)
* Explicit instructions to not drive, operate hazardous machinery or perform tasks where recurrent sz may cause harm
* Admit all pts with 2+ sz in pre-hospital/ED or SE; may need ICU
* Treat alcohol w/d sz w/ BZD, almost never responsive to phenytoin
* Inj Ceftriaxone 2 gm IV q12h
* Inj Aciloc 1 amp IV q12h
* Inj NS @ 75ml/hr
* Labs: CBC, KFT, RBS, ABG
* LP if needed
* CT head if needed
Drugs Causing Reduced seizure threshold
* CiproFloxacin
* AntiPsychotics
<div id="notecontent">Sepsis is defined as life-threatening organ dysfunction caused by a dysregulated host response to an infection. Sepsis is increasingly recognised as an important cause of mortality in the UK and there has been increasing efforts recently to improve the care of patients who present with sepsis. <br><br>How sepsis is classified has changed in recent years - the Surviving Sepsis Guidelines were updated in 2017. <br><br>The new guidelines recognise the following terms:<br><ul><li><b>sepsis</b>: life-threatening organ dysfunction caused by a dysregulated host response to infection</li><li><b>septic shock</b>: a more severe form sepsis, technically defined as <i>'in which circulatory, cellular, and metabolic abnormalities are associated with a greater risk of mortality than with sepsis alone'</i>*</li></ul><br>The old category of severe sepsis is no longer used.<br><br>The term 'systemic inflammatory response syndrome (SIRS)' has also fallen out of favour. Adult patients outside of ICU with suspected infection are identified as being at heightened risk of mortality if they have quickSOFA (qSOFA) score meeting >= 2 of the following criteria: respiratory rate of 22/min or greater, altered mentation, or systolic blood pressure of 100mmHg or less <br><br><div class="alert alert-warning"><b>qSOFA score</b><br>Respiratory rate > 22/min<br>Altered mentation<br>Systolic blood pressure < 100 mm Hg<br></div><br><br>Within an ICU setting a full SOFA** score is often used. Details can be found at the bottom of the notes.<br><br><b>Management</b><br><br>NICE released their own guidelines in 2016. These focussed on the risk stratification and management of patients with suspected.<br><br>For risk stratification NICE recommend using the following criteria:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Red flag criteria</th><th>Amber flag criteria</th></tr></thead><tbody><tr><td><ul><li>Responds only to voice or pain/ unresponsive</li><li>Acute confusional state</li><li>Systolic B.P <= 90 mmHg (or drop >40 from normal)</li><li>Heart rate > 130 per minute</li><li>Respiratory rate >= 25 per minute</li><li>Needs oxygen to keep SpO2 >=92%</li><li>Non-blanching rash, mottled/ ashen/ cyanotic</li><li>Not passed urine in last 18 h/ UO < 0.5 ml/kg/hr</li><li>Lactate >=2 mmol/l</li><li>Recent chemotherapy</li></ul></td><td><li>Relatives concerned about mental status</li><li>Acute deterioration in functional ability</li><li>Immunosuppressed</li><li>Trauma/ surgery/ procedure in last 6 weeks</li><li>Respiratory rate 21-24</li><li>Systolic B.P 91-100 mmHg</li><li>Heart rate 91-130 OR new dysrhythmia</li><li>Not passed urine in last 12-18 hours</li><li>Temperature < 36ºC</li><li>Clinical signs of wound, device or skin infection</li></td></tr></tbody></table></div><br>Clearly the underlying cause of the patients sepsis needs to be identified and treated and the patient supported regardless of the cause or severity. If however any of the red flags are present the 'sepsis six' should be started straight away:<br><ul><li>1. Administer oxygen: Aim to keep saturations > 94% (88-92% if at risk of CO2 retention e.g. COPD)</li><li>2. Take blood cultures</li><li>3. Give broad spectrum antibiotics</li><li>4. Give intravenous fluid challenges: NICE recommend a bolus of 500ml crystalloid over less than 15 minutes</li><li>5. Measure serum lactate </li><li>6. Measure accurate hourly urine output</li></ul><br>*these patients can be clinically identified by a vasopressor requirement to maintain a MAP ≥ 65mmHg and serum lactate >2mmol/L in the absence of hypovolemia<br><br>**To help identify and categorise patients the Sequential (Sepsis-Related) Organ Failure Assessment Score (SOFA) is increasingly used. The score grades abnormality by organ system and accounts for clinical interventions. However, laboratory variables, namely, PaO<sub>2</sub>, platelet count, creatinine level, and bilirubin level, are needed for full computation.<br><br><b>SOFA Score</b><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>System</b></th><th><b>Score 0</b></th><th><b>Score 1</b></th><th><b>Score 2</b></th><th><b>Score 3</b></th><th><b>Score 4</b></th></tr></thead><tbody><tr><td>PaO<sub>2</sub> /FI O<sub>2</sub></td><td>>400</td><td><400</td><td><300</td><td><200</td><td><100</td></tr><tr><td>Platelets x10<sup>3</sup> microlitres</td><td>>150</td><td><150</td><td><100</td><td><50</td><td><20</td></tr><tr><td>Bilirubin µmol/L</td><td>20</td><td>20-32</td><td>33-101</td><td>102-204</td><td>>204</td></tr><tr><td>Cardiovascular</td><td>MAP >70mmHg</td><td>MAP 70mmHg</td><td>Dopamine <5 or dobutamine (any dose)</td><td>Dopamine 5.1-15<br>or epinephrine 0.1<br>or norepinephrine 0.1</td><td>Dopamine >15 or<br>epinephrine >0.1<br>or norepinephrine >0.1</td></tr><tr><td>GCS</td><td>15</td><td>13-14</td><td>10-12</td><td>6-9</td><td><6</td></tr><tr><td>Creatinine µmol/L</td><td><110</td><td>110-170</td><td>171-299</td><td>300-440</td><td>>440</td></tr><tr><td>Urine output ml/day</td><td>>500</td><td>>500</td><td>>500</td><td><500</td><td><200</td></tr></tbody></table></div><br>A SOFA score of 2 or more reflects an overall mortality risk of approximately 10% in a general hospital population with suspected infection. Even patients presenting with modest dysfunction can deteriorate further, emphasizing the seriousness of this condition and the need for prompt and appropriate intervention, if not already being instituted.</div>
---
!!!<center>''SEPSIS IN THE ICU PATIENT''</center>
<hr>
* Pip/taz 4.5 IV Q8H ± Vanc ± Amik
<hr>
!!!<center>''SEPSIS WITH NO CLEAR SOURCE''</center>
<hr>
* Pip/taz 4.5 IV Q8H ± Vanc
!!Septal perforation
can have many causes including
* trauma, nose picking
* systemic disease (such as Wegener's Granulomatosis),
* drugs like decongestant nasal sprays,
* cocaine
The discovery of a septal perforation always prompts further investigation.
* Treatment is surgical with rhinoplasty.
* Saline douching may be used as a symptomatic treatment for nasal crusting associated with perforation.
!!!<center>''SEPTIC DURAL SINUS THROMBOSIS''</center>
<hr>
* Vancomycin (15 to 20 mg/kg per dose intravenously [IV] every 8 to 12 hours, not to exceed 2 g per dose).
* combined with a third- or fourth-generation cephalosporin, either ceftriaxone (2 g IV every 12 hours) or cefepime (2 g IV every 8 to 12 hours); the latter agent is preferred if Pseudomonas coverage is desired.
* Anaerobic coverage should be added if a dental or sinus infection is suspected. Intravenous metronidazole (500 mg every eight hours) is highly effective for this purpose.
* For brain abscess, higher doses of metronidazole (15 mg/kg loading dose [usually 1 g] followed by 7.5 mg/kg [usually 500 mg] every six hours) are recommended.
* most common organism overall is Staphylococcus aureus
* in young adults who are sexually active Neisseria gonorrhoeae should also be considered
* in adults, the most common location is the knee
;The Kocher criteria for the diagnosis of septic arthritis:
* fever >38.5 degrees C
* non-weight bearing
* raised ESR
* raised WCC
The probabilities are calculated thus:
* 0 points = very low risk
* 1 point = 3% probability of septic arthritis
* 2 points = 40% probability of septic arthritis
* 3 points = 93% probability of septic arthritis
* 4 points = 99% probability of septic arthritis
;Management
* synovial fluid should be obtained before starting treatment
* intravenous antibiotics which cover Gram-positive cocci are indicated.
* The BNF currently recommends flucloxacillin or clindamycin if penicillin allergic
* antibiotic treatment is normally be given for several weeks (BNF states 6-12 weeks)
* needle aspiration should be used to decompress the joint
* arthroscopic lavage may be required
!!!<center>''SEVERE PANCREATITIS''</center>
<hr>
* Normally not indicated, if abd sepsis then Pip/taz 4.5 IV Q8H; Cipro 400 IV Q12H + Metro 500 IV Q8H OR Mero 1gm Q8H
<div id="notecontent">The differential diagnosis of shin lesions includes the following conditions:<br><ul><li><span id="concept_popover_id_9224" class="concept concept-3-u trigger-link" data-cid="9224" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9224'>You've been tested on this concept once, 4 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating9224' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(127,255,0)'>Importance: <b>75</b></span> </div>" data-original-title="Tender shin lesions - erythema nodosum">erythema nodosum</span></li><li><span class="concept" data-cid="9223">pretibial myxoedema</span></li><li><span id="concept_popover_id_9222" class="concept concept-3-u trigger-link" data-cid="9222" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9222'>You've been tested on this concept once, 4 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating9222' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(147,255,0)'>Importance: <b>71</b></span> </div>" data-original-title="Ulcerative colitis, red papule --> necrotic ulcer - pyoderma gangrenosum">pyoderma gangrenosum</span></li><li><span id="concept_popover_id_9221" class="concept concept-3-u trigger-link" data-cid="9221" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9221'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating9221' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(224,255,0)'>Importance: <b>56</b></span> </div>" data-original-title="Diabetes, waxy yellow shin lesions - necrobiosis lipoidica diabeticorum">necrobiosis lipoidica diabeticorum</span></li></ul><br>Below are the characteristic features:<br><br>Erythema nodosum<br><ul><li>symmetrical, erythematous, tender, nodules which heal without scarring</li><li>most common causes are streptococcal infections, sarcoidosis, inflammatory bowel disease and drugs (penicillins, sulphonamides, oral contraceptive pill)</li></ul><br>Pretibial myxoedema<br><ul><li>symmetrical, erythematous lesions seen in Graves' disease</li><li>shiny, orange peel skin</li></ul><br>Pyoderma gangrenosum<br><ul><li>initially small red papule</li><li>later deep, red, necrotic ulcers with a violaceous border</li><li>idiopathic in 50%, may also be seen in inflammatory bowel disease, connective tissue disorders and myeloproliferative disorders</li></ul><br>Necrobiosis lipoidica diabeticorum<br><ul><li>shiny, painless areas of yellow/red skin typically on the shin of diabetics</li><li>often associated with telangiectasia</li></ul></div>
!!!<center>''HYPOTENSION AND SHOCK PROTOCOL''</center>
<hr>
* Address ABCs
* Hypotension: BP below pt’s baseline, often defined as SBP <90 mmHg
* Shock: Insufficient perfusion pressures for organs’ metabolic needs
* AMS, CP, SOB?
* ↓ BP, ↑ HR, hypoxia, ↑ RR, UOP <1 mL/kg/h?
* Get CBC, KFT, PT/INR, cardiac markers, LFTs, ABG, T/S, stool occult, ECG e/o ischemia
* POC ultrasonography: RUSH (Rapid Ultrasound in Shock protocol incorporates a 3-part bedside physiologic assessment simplified as:
* The ''PUMP'' (POC cardiac US to assess for pericardial effusion, global LV contractility, relative size of LV to RV)
* The ''TANK'' (POC IVC US to assess respiratory dynamics of IVC & volume status, as well as lung, pl & abdominal US to assess for pathology that could alter vascular volume; ie, PTX, pl effusion, free intra-abdominal fluid)
* The ''PIPES'' (POC thoracic & abdominal aortic US to assess for AD/AAA & LE compression US to assess for DVT)
|!RUSH Protocol: Findings of Classic Shock States|<|<|<|<|
|!RUSH Evaluation|!Hypovolemic Shock|!Cardiogenic Shock|!Obstructive Shock|!Distributive Shock|
|Pump|Hypercontractile Heart;<br>Small Chambers|Hypocontractile Heart;<br>Dilated heart|Hypercontractile Heart;<br>Pericardial Eff<br>Cardiac Tamp<br>RV Strain<br>Cardiac Thromb|Hypercontractile Heart(early); Hypercontractile Heart(late)|
|Tank|Flat IVC<br>Flat IJ<br>Peritoneal Fluid<br>PL Fluid|Distended IVC<br>Distended IJ<br>Lung Rockets<br>PL Fluid<br>Peritoneal Fluid|Distended IVC<br>Distended IJ<br>No Lung Sliding(PTX)|NL or Small IVC<br>PL Fluid<br>Peritoneal Fluid|
|Pipes|AAA<br>AD|NL|DVT|NL|
* Place 2 large bore IV cannulas (16 or 18G)
* If peripheral large bore IVs cannot be placed in a timely manner, consider IO (humeral/tibial/sternal) or stat central line
* Priority should be to restore hemodynamics before time-consuming diagnostic w/u:
* 1–2 L of NS infusion as rapid as possible
* Stat uncrossmatched blood in life-threatening hemorrhage
* If not responding to bolus (>4 Lt) then start vasopressors.
* Use MS, UOP, & MAP as early e/o adequate end-organ perfusion
* Pulse Present and Minimum SBP (mmHg): Radial artery 80, Femoral artery 70, Carotid 60
<hr>
!!!<center>''HYPOVOLEMIC SHOCK''</center>
<hr>
* Dehydration is a Dx of exclusion
* hemorrhage, ectopic pregnancy?
* Hemorrhage Trauma (internal, external), GI bleed, ruptured AAA?
* Other Dehydration, ectopic pregnancy, placenta previa, placental abruption?
* Trauma, melena, hematochezia, hematemesis, ↓ PO intake?
* Get above labs +UA/HCG, FAST (blood in abdomen or chest); consider CT chest/abd/pelvis, pelvic US, type/screen
* Identify/treat cause, IV fluid bolus; consider PRBCs; consult immediately for life-threatening disorders requiring definitive tx (surgery, GI, OB/Gyn)
* Admit to ICU vs. OT
<hr>
!!!<center>''CARDIOGENIC SHOCK''</center>
<hr>
* Consider intubation early, look for & treat underlying cause
* ↓ CO + nl intravascular volume → ↓ systolic contractility + ↑ diastolic filling
* Differential: ACS, myocarditis, dysrhythmia, valvular failure, severe CMP, cardiac contusion, pulmonary HTN
* Findings: ↑ HR, ↓ BP, ↑ RR, hypoxia, pulmonary rales, S3, S4
* Eval: CBC, KFT, Ca, Mg, PO4, ECG, CXR, stat echo (systolic/diastolic dysfxn, papillary muscle rupture, ventricular wall rupture, VSD, pericardial effusion, R heart strain)
* Treatment
* Treat underlying dz
* IV fluids (if ↓ intravascular volume)
* Dopamine: ↑ myocardial contractility & BP, but ↑ O2 demand
* Dobutamine: ↑ HR & inotropy, less O2 demand, but causes vasodilation (best if not tachycardic or severely hypotensive)
* Central venous catheter: for CVP monitoring, pressors
* Cardiology consult, Revascularization
* Other: Thrombolytics, IABP
<hr>
!!!<center>''SEPTIC SHOCK''</center>
<hr>
* Diagnostic Criteria for Sepsis:
* Inflammatory variables:Leukocytosis (WBC >12,000), Leukopenia (WBC <4,000), nl WBC w/ >10% immature cells (band forms), CRP >2 SD above nl, Procalcitonin >2 SD above nl
* Organ dysfxn variables: Arterial hypoxemia (PaO2/FiO2 <300), Acute oliguria (UOP <0.5 mL/kg/h for at least 2 h despite fluid resuscitation), Cr increase >0.5 mg/dL, Coagulation abx (INR >1.5 or aPTT >60 s), Ileus, TTP (plt count <100,000 μL−1), Hyperbilirubinemia (plasma Tbili >4 mg/dL)
* Tissue perfusion variables: Hyperlactemia (>1 mmol/L), Decreased cap refill/mottling
* Look for source of infection
* Respiratory: PNA, empyema
* Abdominal: Peritonitis, abscess, cholangitis
* Skin: Cellulitis, fasciitis
* Renal: Pyelonephritis
* CNS: Meningitis, brain abscess
* Evaluation: CBC, KFT, LFTs, ABG with lactate, blood (×2)/urine/sputum culture, PT/PTT, cardiac markers, CXR; consider CT brain/LP,
* CT chest &/or abdomen, RUQ US based on pt
* Treatment
* Goals during the 1st 6 h:
* ''CVP 8–12 mmHg'' → NS/LR 30 cc/kg
* Consider albumin when pts require substantial IVFs
* Central venous access ASAP
* ''MAP ≥65 mmHg'' → use of vasopressors, whereby:
* First choice: Inj NORAD start @ 6 ml/hr
* Next choice: Adrenaline drip
* Next choice: Vasopressin 0.03 units/min
* Arterial catheter should be placed as soon as practical
* ''UOP ≥0.5 mL/kg/h''
* Place Foley catheter
* ScvO2 70%
* Trial of dobutamine up to 20 mcg/kg/min in the presence of myocardial dysfxn (elevated filling pressure/low CO) or ongoing signs of hypoperfusion, despite CVP & MAP goals (ScvO2 <70%)
* Abx: Broad spectrum, given prior to drawing cultures (cover gram+, gram−, anaerobes; consider double coverage for pseudomonas)
* Start abx w/i 1 h of recognition, regardless of whether source is known
* Start Marik protocol
* Inj Vit C 1.5 gm IV q6h
* Inj Hydrocortisone 50 mg IV q6h
* INj Thiamine 200 mg IV q12h
* Inj Ceftriaxone 2 gm IV q12h
* Inj Pip-Taz 4.5 IV q8h
* Inj Mero 1 gm IV q8h
* Inj Vanc 1 gm IV q12h
* Inj Clindamycin 600 IV q8h
* Inj Amika 500 IV q12h
* Inj Levoflox 500 IV OD
* PRBCs to target Hgb 7–9 g/dL
* Plts if <10,000 w/o bleed, <20,000 w/ risk of bleeding, <50,000 for active bleeding, surgery, procedure
* Supplemental O2; consider need for intubation early; if intubated use VTs of 6 cc/kg predicted BW
* Use of sedation/paralytics → ↓ O2 consumption
* Insulin SS to maintain glucose <180
* Renal replacement therapy: Use continuous therapies (ie, CVVH) to facilitate managing fluid balance in HD unstable pts
<div id="notecontent">The syndrome of inappropriate ADH secretion (SIADH) is characterised by hyponatraemia secondary to the dilutional effects of excessive water retention.<br><br>Causes of SIADH<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Category</b></th><th><b>Examples</b></th></tr></thead><tbody><tr><td>Malignancy</td><td><ul><li><span class="concept" data-cid="9299"><b>small cell lung cancer</b></span></li><li>also: pancreas, prostate</li></ul></td></tr><tr><td>Neurological</td><td><ul><li>stroke</li><li>subarachnoid haemorrhage</li><li>subdural haemorrhage</li><li>meningitis/encephalitis/abscess</li></ul></td></tr><tr><td>Infections</td><td><ul><li>tuberculosis</li><li>pneumonia</li></ul></td></tr><tr><td><span id="concept_popover_id_808" class="concept concept-3-u trigger-link" data-cid="808" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative808'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating808' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(71,255,0)'>Importance: <b>86</b></span> </div>" data-original-title="SIADH - drug causes: carbamazepine, sulfonylureas, SSRIs, tricyclics">Drugs</span></td><td><ul><li>sulfonylureas*</li><li><span class="concept" data-cid="1321">SSRIs</span>, tricyclics</li><li>carbamazepine</li><li>vincristine</li><li>cyclophosphamide</li></ul></td></tr><tr><td>Other causes</td><td><ul><li>positive end-expiratory pressure (PEEP)</li><li>porphyrias</li></ul></td></tr></tbody></table></div><br>Management<br><ul><li>correction must be done slowly to avoid precipitating central pontine myelinolysis</li><li><span class="concept" data-cid="1322">fluid restriction</span></li><li><span class="concept" data-cid="1770">demeclocycline</span>: reduces the responsiveness of the collecting tubule cells to ADH</li><li>ADH (vasopressin) receptor antagonists have been developed</li></ul><br>*the BNF states this has been reported with glimepiride and glipizide.</div>
<div id="notecontent">Sickle cell anaemia is characterised by periods of good health with intervening crises<br><br>A number of types of crises are recognised:<br><ul><li>thrombotic, 'painful crises'</li><li>sequestration</li><li>acute chest syndrome</li><li>aplastic</li><li>haemolytic</li></ul><br>Thrombotic crises<br><ul><li>also known as painful crises or vaso-occlusive crises</li><li>precipitated by <span id="concept_popover_id_4064" class="concept concept-1 trigger-link" data-cid="4064" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4064'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating4064' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(193,255,0)'>Importance: <b>62</b></span> </div>" data-original-title="Thrombotic crises in sickle cell can be precipitated by infection, dehydration or deoxygenation">infection, dehydration, deoxygenation</span></li><li>infarcts occur in various organs including the bones (e.g. avascular necrosis of hip, hand-foot syndrome in children, lungs, spleen and brain</li></ul><br>Sequestration crises<br><ul><li>sickling within organs such as the spleen or lungs causes pooling of blood with worsening of the anaemia</li></ul><br>Acute chest syndrome<br><ul><li><span id="concept_popover_id_2827" class="concept concept-0 trigger-link" data-cid="2827" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative2827'>You've never been tested on this concept</div><br><div id='div_concept_rating2827' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(81,255,0)'>Importance: <b>84</b></span> </div>" data-original-title="Acute chest syndrome is a complication of sickle-cell disease and presents with dyspnoea, chest pain, cough, hypoxia and new pulmonary infiltrates seen on chest x-ray">dyspnoea, chest pain, pulmonary infiltrates, low pO2</span></li><li>the most common cause of death after childhood</li></ul><br>Aplastic crises<br><ul><li>caused by infection with parvovirus</li><li><span class="concept" data-cid="9272">sudden fall in haemoglobin</span></li></ul><br>Haemolytic crises<br><ul><li>rare</li><li>fall in haemoglobin due an increased rate of haemolysis</li></ul></div>
---
General management
* analgesia e.g. opiates
* rehydrate
* oxygen
* consider antibiotics if evidence of infection
* blood transfusion
* exchange transfusion: e.g. if neurological complications
---
<div id="notecontent">The table below summarises characteristic (if not necessarily the most common) side-effects of drugs used antibiotics<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Drug</b></th><th><b>Side-effect</b></th></tr></thead><tbody><tr><td>Amoxicillin</td><td>Rash with infectious mononucleosis</td></tr><tr><td>Co-amoxiclav</td><td>Cholestasis</td></tr><tr><td>Flucloxacillin</td><td>Cholestasis (usually develops several weeks after use)</td></tr><tr><td>Erythromycin</td><td>Gastrointestinal upset<br> Prolongs QT interval</td></tr><tr><td>Ciprofloxacin</td><td>Lowers seizure threshold<br> Tendonitis</td></tr><tr><td>Metronidazole</td><td>Reaction following alcohol ingestion</td></tr><tr><td>Doxycycline</td><td>Photosensitivity</td></tr><tr><td>Trimethoprim</td><td>Rashes, including photosensitivity<br> Pruritus<br> Suppression of haematopoiesis</td></tr></tbody></table></div></div>
<div id="body_content">
Silicosis is a fibrosing lung disease caused by the inhalation of fine particles of crystalline silicon dioxide (silica). It is a risk factor for developing TB (silica is toxic to macrophages).<br><br>Occupations at risk of silicosis<br><ul><li>mining</li><li>slate works</li><li>foundries</li><li>potteries</li></ul><br>Features<br><ul><li>fibrosing lung disease</li><li>'egg-shell' calcification of the hilar lymph nodes</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb151b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb151.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb151b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Chest x-ray from a patient with silicosis. Note the bilateral diffuse upper lobe reticular shadowing superimposed with occasional scattered mass like opacities. These features are in keeping with silicosis and progressive massive fibrosis (PMF)</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb152b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb152.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb152b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">CT scan from a patient with silicosis showing upper zone predominant mass-like scarring with calcification and volume loss. Hilar and mediastinal lymph node calcification also noted. No cavitary changes are seen. There is a left pleural effusion.</div></div>
<center><div class="tc-sidebar-lists">
<$set name="searchTiddler" value="$:/temp/search">
<div class="tc-search">
<$edit-text tiddler="$:/temp/search" type="search" tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">> class="tc-popup-handle"/>
<$reveal state="$:/temp/search" type="nomatch" text="">
<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search}}/>
<$action-setfield $tiddler="$:/temp/search" text=""/>
<$action-navigate $to="$:/AdvancedSearch"/>
</$button>
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/search" text="" />
{{$:/core/images/close-button}}
</$button>
<$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible">
{{$:/core/images/down-arrow}}
<$list filter="[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
<$set name="searchTerm" value={{{ [<searchTiddler>get[text]] }}}>
<$set name="resultCount" value="""<$count filter="[!is[system]search<searchTerm>]"/>""">
{{$:/language/Search/Matches}}
</$set>
</$set>
</$list>
</$button>
</$reveal>
<$reveal state="$:/temp/search" type="match" text="">
</$reveal>
</div>
<$reveal tag="div" class="tc-block-dropdown-wrapper" state="$:/temp/search" type="nomatch" text="">
<$reveal tag="div" class="tc-block-dropdown tc-search-drop-down tc-popup-handle" state=<<qualify "$:/state/popup/search-dropdown">> type="nomatch" text="" default="">
<$list filter="[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
{{$:/core/ui/SearchResults}}
</$list>
</$reveal>
</$reveal>
</$set>
</div>
</center>
!!<center>''SKIN AND CONNECTIVE TISSUE INFECTIONS''</center>
<hr>
!!!<center>''CELLULITIS''</center>
<hr>
* ''Mild:'' Augmentin 875 BD OR Cephalexin 500 q6h OR Clindamycin 300 TDS OR TMP/SMX 1–2 DS BD PLUS Amox 500 PO TDS OR Doxycycline 100 mg PO BD PLUS Amox 500 PO TDS;
* ''Mod to severe:'' Inj Ceftriaxone-sulbactum 1.5 BD OR Clindamycin 600 mg IV Q8H;
<hr>
!!!<center>''SUPPURATIVE CELLULITIS''</center>
<hr>
* Bactrim DS BD OR Doxy 100 BD OR Clinda 300 TDS
<hr>
!!!<center>''DIABETIC FOOT''</center>
<hr>
* ''Mild:'' Amox-clav 875 BD OR Clinda 300 TDS OR Cephalexin 500 QID;
* ''Severe:'' Pip/taz 4.5 g IV Q6H OR Cipro 400 mg IV Q12H PLUS Clinda 600 mg IV Q8H/Metro 500 mg IV/PO TDS
<hr>
!!!<center>''SURGICAL SITE INFECTIONS''</center>
<hr>
* Surgical-site inf: Oxacillin 1–2 g IV Q4H OR Cefazolin 1 g IV Q8H OR Clindamycin 600 mg IV Q8H
<hr>
!!!<center>''NECROTIZING FASCIITIS''</center>
<hr>
* Pip/taz/Mero + Clinda 600-900 IV Q8H/Linezolid 600 IV q12h
<hr>
!!!<center>''VERTEBRAL OSTEOMYELITIS''</center>
<hr>
* Vanc + Ceftriaxone 2 gm IV q12h Oral: CLoxacillin 500 q8h OR Cephalexin 500 q6h;
* ''Severe:'' Pip-Taz 4.5 q8h OR Cefoperazone-sulb 3 gm IV q12h PLUS Clinda 600-900 IV q8h
<hr>
!!!<center>''SEPTIC ARTHRITIS''</center>
<hr>
* Ceftriaxone 2gm IV OD; Add Vanc if prosthetic joint.
<hr>
!!!<center>''MASTITIS / ABSCESS''</center>
<hr>
* Amox-clav 625 BD OR Cephalexin 500 QID OR Ceftriaxone 2 gm OD; Clinda OR Vanc for MRSA coverage
<div id="notecontent">The table below gives characteristic exam question features for conditions affecting the soles of the feet<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Diagnosis</th><th>Notes</th></tr></thead><tbody><tr><td><b>[[Verrucas|https://www.nidirect.gov.uk/conditions/warts-and-verrucas]]</b></td><td>Secondary to the human papilloma virus<br>Firm, hyperkeratotic lesions<br>Pinpoint petechiae centrally within the lesions<br>May coalesce with surrounding warts to form mosaic warts</td></tr><tr><td><b>[[Tinea pedis|https://www.mayoclinic.org/diseases-conditions/athletes-foot/symptoms-causes/syc-20353841]]</b></td><td>More commonly called Athlete's foot<br>Affected skin is moist, flaky and itchy</td></tr><tr><td><b>[[Corn and calluses|https://www.nidirect.gov.uk/conditions/corns-and-calluses]]</b></td><td>A corn is small areas of very thick skin secondary to a reactive hyperkeratosis<br>A callus is larger, broader and has a less well defined edge than a corn</td></tr><tr><td><b>[[Keratoderma|https://dermnetnz.org/topics/palmoplantar-keratoderma]]</b></td><td>May be acquired or congenital<br>Describes a thickening of the skin of the palms and soles<br>Acquired causes include reactive arthritis (keratoderma blennorrhagica)</td></tr><tr><td><b>[[Pitted keratolysis|https://dermnetnz.org/topics/pitted-keratolysis/]]</b></td><td>Affects people who sweat excessively<br>Patients may complain of damp and excessively smelly feet<br>Usually caused by Corynebacterium<br>Heel and forefoot may become white with clusters of punched-out pits</td></tr><tr><td><b>[[Palmoplantar pustulosis|https://dermnetnz.org/topics/palmoplantar-pustulosis/]]</b></td><td>Crops of sterile pustules affecting the palms and soles<br>The skin is thickened, red. Scaly and may crack<br>More common in smokers</td></tr><tr><td><b>[[Juvenile plantar dermatosis|https://dermnetnz.org/topics/juvenile-plantar-dermatosis/]]</b></td><td>Affects children. More common in atopic patients with a history of eczema<br>Soles become shiny and hard. Cracks may develop causing pain<br>Worse during the summer</td></tr></tbody></table></div></div>
<div id="notecontent">Note whilst pyoderma gangrenosum can occur in diabetes mellitus it is rare and is often not included in a differential of potential causes<br><br>Necrobiosis lipoidica<br><ul><li>shiny, painless areas of yellow/red/brown skin typically on the shin</li><li>often associated with surrounding telangiectasia</li></ul><br>Infection<br><ul><li>candidiasis</li><li>staphylococcal</li></ul><br>Neuropathic ulcers<br><br>Vitiligo<br><br>Lipoatrophy<br><br>Granuloma annulare*<br><ul><li>papular lesions that are often slightly hyperpigmented and depressed centrally</li></ul><br>*it is not clear from recent studies if there is actually a significant association between diabetes mellitus and granuloma annulare, but it is often listed in major textbooks</div>
<div id="notecontent">Systemic lupus erythematosus (SLE) is a multisystem, autoimmune disorder. It typically presents in early adulthood and is more common in women and people of Afro-Caribbean origin.<br><br>General features<br><ul><li>fatigue</li><li>fever</li><li>mouth ulcers</li><li>lymphadenopathy</li></ul><br>Skin<br><ul><li>malar (butterfly) rash: spares nasolabial folds</li><li>discoid rash: scaly, erythematous, well demarcated rash in sun-exposed areas. Lesions may progress to become pigmented and hyperkeratotic before becoming atrophic</li><li>photosensitivity</li><li>Raynaud's phenomenon</li><li>livedo reticularis</li><li>non-scarring alopecia</li></ul><br>Musculoskeletal<br><ul><li>arthralgia</li><li>non-erosive arthritis</li></ul><br>Cardiovascular<br><ul><li>pericarditis: the most common cardiac manifestation</li><li>myocarditis</li></ul><br>Respiratory<br><ul><li>pleurisy</li><li>fibrosing alveolitis</li></ul><br>Renal<br><ul><li>proteinuria</li><li>glomerulonephritis (diffuse proliferative glomerulonephritis is the most common type)</li></ul><br>Neuropsychiatric<br><ul><li>anxiety and depression</li><li>psychosis</li><li>seizures</li></ul></div>
---
>I'M DAMN SHARP
;at least 4 of 11 known manifestations
* Immunologic Abnormalities Anti Double stranded DNA - Anti Sm - False positive Syphilis - Positive LE cell
* Malar Rash
* Discoid Rash
* ANA sensitive test
* Mucositis - Oral ulcers
* Neurologic Psychosis - Seizures - Stroke from Vasculitis
* Serositis (chest pain)
* Hematologic (peripheral destruction of all cells) Hemolytic Anemia - Anemia of Chr disease - Lymphopenia - Leukopenia - Thrombocytopenia
* Arthritis (Normal X-ray) is Non Deforming* compared to Rheumatoid
* Renal Mild proteinuria to Failure - Anti ds DNA & Complement levels for activity
* Photosensitivity
---
;complications
*endocarditis(libman sachs) - anti phospholipid - pneumonia - restrictive lung disease
---
<div id="body_content">
NICE released guidance in 2008 on the management of smoking cessation. General points include:<br><ul><li>patients should be offered nicotine replacement therapy (NRT), varenicline or bupropion - NICE state that clinicians should not favour one medication over another</li><li>NRT, varenicline or bupropion should normally be prescribed as part of a commitment to stop smoking on or before a particular date (target stop date)</li><li>prescription of NRT, varenicline or bupropion should be sufficient to last only until 2 weeks after the target stop date. Normally, this will be after 2 weeks of NRT therapy, and 3-4 weeks for varenicline and bupropion, to allow for the different methods of administration and mode of action. Further prescriptions should be given only to people who have demonstrated that their quit attempt is continuing</li><li>if unsuccessful using NRT, varenicline or bupropion, do not offer a repeat prescription within 6 months unless special circumstances have intervened</li><li>do not offer NRT, varenicline or bupropion in any combination</li></ul><br>Nicotine replacement therapy<br><ul><li>adverse effects include nausea & vomiting, headaches and flu-like symptoms</li><li>NICE recommend offering a combination of nicotine patches and another form of NRT (such as gum, inhalator, lozenge or nasal spray) to people who show a high level of dependence on nicotine or who have found single forms of NRT inadequate in the past</li></ul><br>Varenicline<br><ul><li>a nicotinic receptor partial agonist</li><li>should be started 1 week before the patients target date to stop</li><li>the recommended course of treatment is 12 weeks (but patients should be monitored regularly and treatment only continued if not smoking)</li><li>has been shown in studies to be more effective than bupropion</li><li>nausea is the most common adverse effect. Other common problems include headache, insomnia, abnormal dreams</li><li>varenicline should be used with caution in patients with a history of depression or self-harm. There are ongoing studies looking at the risk of suicidal behaviour in patients taking varenicline</li><li>contraindicated in pregnancy and breast feeding</li></ul><br>Bupropion<br><ul><li>a norepinephrine and dopamine reuptake inhibitor, and nicotinic antagonist</li><li>should be started 1 to 2 weeks before the patients target date to stop</li><li><span class="concept" data-cid="1699">small risk of seizures (1 in 1,000)</span></li><li>contraindicated in <span class="concept" data-cid="1699">epilepsy</span>, pregnancy and breast feeding. Having an eating disorder is a relative contraindication</li></ul><br><b>Pregnant women</b><br><br>NICE recommended in 2010 that all pregnant women should be tested for smoking using <span class="concept" data-cid="691">carbon monoxide detectors</span>, partly because <i>'some women find it difficult to say that they smoke because the pressure not to smoke during pregnancy is so intense.'</i>. All women who smoke, or have stopped smoking within the last 2 weeks, or those with a CO reading of 7 ppm or above should be referred to NHS Stop Smoking Services.<br><br>Interventions<br><ul><li>the first-line interventions in pregnancy should be cognitive behaviour therapy, motivational interviewing or structured self-help and support from NHS Stop Smoking Services</li><li>the evidence for the use of NRT in pregnancy is mixed but it is often used if the above measures failure. There is no evidence that it affects the child's birthweight. Pregnant women should remove the patches before going to bed</li><li>as mentioned above, varenicline and bupropion are contraindicated</li></ul></div>
---
>VARUN is partial agonist
>VARUN's unpredictable behaviour
*has Neuropsychiatric effects, don't prefer it in Pts with unstable psychiatric conditions or suicidal ideation
---
>Welldone Unknown
*Bupropion (inh NE, SERO & DOPAMINE uptake)
>BUpropion = BU lemics
*Headache-Seizures in Bulemics, Anorexix, Epileptics, Alcoholics, Pts on BZDs
---
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Chronic obstructive pulmonary disease</b></th><th>Seen invariably in smokers<br>Chronic productive cough is typical<br>Features of right heart failure may be seen</th></tr></thead><tbody><tr><td><b>Heart failure</b></td><td>A history of ischaemic heart disease or hypertension may be present<br>Orthopnoea and paroxysmal nocturnal dyspnoea are characteristic<br>Bibasal crackles and a third heart sound (S3) are the most reliable features of left-sided failure<br>Right heart failure causes peripheral oedema and a raised JVP</td></tr><tr><td><b>Asthma</b></td><td>Cough, wheeze and shortness of breath are typical<br>Symptoms are often worse at night and may be precipitated by cold weather or exercise<br>Associated with hay fever and eczema</td></tr><tr><td><b>Aortic stenosis</b></td><td>Chest pain, SOB and syncope seen in symptomatic patients<br>An ejection systolic murmur radiating to the neck and narrow pulse pressure are found on examination</td></tr><tr><td><b>Recurrent pulmonary emboli</b></td><td>There may be a history of predisposing factors e.g. Malignancy<br>Pleuritic chest pain and haemoptysis may be seen but symptoms are often vague<br>Tachycardia and tachypnoea are common in the acute situation<br>Symptoms of right heart failure may develop in severe cases</td></tr><tr><td><b>Lung cancer</b></td><td>Normally seen in smokers<br>Haemoptysis, chronic cough or unresolving infection are common presentations<br>Systemic symptoms e.g. Weight loss and anorexia</td></tr><tr><td><b>Pulmonary fibrosis</b></td><td>Progressive shortness of breath may be the only symptom<br>Fine bibasal crackles are typical<br>Spirometry shows a restrictive pattern</td></tr><tr><td><b>Bronchiectasis</b></td><td>Affected patients may produce large amounts of purulent sputum<br>Patients may have a history of previous infections (e.g. Tuberculosis, measles), bronchial obstruction or ciliary dyskinetic syndromes e.g. Kartagener's syndrome</td></tr><tr><td><b>Anaemia</b></td><td>There may be a history of gastrointestinal symptoms<br>Pallor may be seen on examination</td></tr><tr><td><b>Obesity</b></td><td>Obese patients tend to be more SOB due to the increased work of activity</td></tr></tbody></table></div>
!!!<center>''SOFA SCORE''</center>
<hr>
The sequential organ failure assessment score (SOFA score) is used to track a person's status during the stay in an ICU to determine the extent of a person's organ function or rate of failure
<center>
|!NERVOUS SYSTEM|!SOFA score|
|!GCS|~|
| 15 | 0 |
| 13–14 | +1 |
| 10–12 | +2 |
| 6–9 | +3 |
| <6 | +4 |
|!RESPIRATORY SYSTEM|!SOFA score|
|!PaO,,2,,/FiO,,2,, (mmHg)|~|
| ≥400 | 0 |
| <400 | +1 |
| <300 | +2 |
| <200 '''and''' mechanically ventilated | +3 |
| <100 '''and''' mechanically ventilated | +4 |
|!CARDIOVASCULAR SYSTEM|!SOFA score|
|!MAP or Vasopressors|~|
| MAP ≥70 mmHg | 0 |
| MAP < 70 mmHg | +1 |
| Dopamine ≤5µg/kg/min or <br>Dobutamine (any dose) | +2 |
| Dopamine>5µg/kg/min or<br> Epinephrine ≤0.1µg/kg/min or <br>Norepinephrine≤0.1µg/kg/min | +3 |
| Dopamine>15µg/kg/min or<br> Epinephrine>0.1µg/kg/min or<br> Norepinephrine>0.1µg/kg/min | +4 |
|!LIVER|!SOFA score|
|!Bilirubin (mg/dl) [μmol/L]|~|
| <1.2 [<20] | 0 |
| 1.2–1.9 [20-32] | +1 |
| 2.0–5.9 [33-101] | +2 |
| 6.0–11.9 [102-204] | +3 |
| > 12.0 [>204] | +4 |
|!KIDNEYS|!SOFA score|
|!Creatinine (mg/dl) [μmol/L] (or urine output)|~|
| <1.2 [<110] | 0 |
| 1.2–1.9 [110-170] | +1 |
| 2.0–3.4 [171-299] | +2 |
| 3.5–4.9 [300-440] (or <500ml/d) | +3 |
| > 5.0 [>440] (or <200ml/d) | +4 |
|!COAGULATION|!SOFA score|
|!Platelets×10^^3^^/µl|~|
| ≥150 | 0 |
| <150 | +1 |
| <100 | +2 |
| <50 | +3 |
| <20 | +4 |
<hr>
<center>''QUICK SOFA SCORE''</center>
<hr>
|!Assessment|! qSOFA score |
|Low blood pressure (SBP ≤ 100 mmHg) | 1 |
|High respiratory rate (≥ 22/min) | 1 |
|Altered mentation (GCS ≤ 14) | 1 |
* The score ranges from 0 to 3 points.
* The presence of 2 or more qSOFA points near the onset of infection was associated with a greater risk of death or prolonged intensive care unit stay.
</center>
<div id="notecontent">Sore throat encompasses pharyngitis, tonsillitis, laryngitis<br><br>Clinical Knowledge Summaries recommend:<br><ul><li>throat swabs and rapid antigen tests should not be carried out routinely in patients with a sore throat</li></ul><br>Management<br><ul><li>paracetamol or ibuprofen for pain relief</li><li>antibiotics are not routinely indicated</li><li>there is some evidence that a single dose of oral corticosteroid may reduce the severity and duration of pain, although this has not yet been incorporated into UK guidelines</li></ul><br>NICE indications for antibiotics<br><ul><li>features of marked systemic upset secondary to the acute sore throat</li><li>unilateral peritonsillitis</li><li>a history of rheumatic fever</li><li>an increased risk from acute infection (such as a child with diabetes mellitus or immunodeficiency)</li><li>patients with acute sore throat/acute pharyngitis/acute tonsillitis when 3 or more Centor criteria are present</li></ul><br><b>Scoring systems</b><br><br>The <b>Centor criteria</b> are: score 1 point for each (maximum score of 4)<br><ul><li>presence of tonsillar exudate</li><li>tender anterior cervical lymphadenopathy or lymphadenitis</li><li>history of fever</li><li>absence of cough</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Centor score</th><th>Likelihood of isolating <i>Streptococci</i></th></tr></thead><tbody><tr><td>0 or 1 or 2</td><td>3 to 17%</td></tr><tr><td>3 or 4</td><td>32 to 56%</td></tr></tbody></table></div><br>The <b>FeverPAIN criteria</b> are: score 1 point for each (maximum score of 5)<br><ul><li>Fever over 38°C. </li><li>Purulence (pharyngeal/tonsillar exudate).</li><li>Attend rapidly (3 days or less)</li><li>Severely Inflamed tonsils</li><li>No cough or coryza</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>FeverPAIN score</th><th>Likelihood of isolating <i>Streptococci</i></th></tr></thead><tbody><tr><td>0 or 1</td><td>13 to 18%</td></tr><tr><td>2 or 3</td><td>34% to 40%</td></tr><tr><td>4 or 5</td><td>62% to 65%</td></tr></tbody></table></div><br>If antibiotics are indicated then either <span class="concept" data-cid="1851">phenoxymethylpenicillin</span> or erythromycin (if the patient is penicillin allergic) should be given. Either a 7 or 10 day course should be given</div>
<div id="body_content">
Basics<br><ul><li>most common hereditary haemolytic anaemia in people of northern European descent</li><li>autosomal dominant defect of red blood cell cytoskeleton</li><li>the normal biconcave disc shape is replaced by a sphere-shaped red blood cell</li><li>red blood cell survival reduced as destroyed by the spleen</li></ul><br>Presentation<br><ul><li>failure to thrive</li><li>jaundice, <span class="concept" data-cid="1232">gallstones</span></li><li>splenomegaly</li><li>aplastic crisis precipitated by parvovirus infection</li><li>degree of haemolysis variable</li><li>MCHC elevated</li></ul><br>Diagnosis<br><ul><li>the osmotic fragility test was previously the recommend investigation of choice. However, it is now deemed unreliable and is no longer recommended</li><li>the British Journal of Haematology (BJH) guidelines state that '<i>patients with a family history of HS, typical clinical features and laboratory investigations (spherocytes, raised mean corpuscular haemoglobin concentration[MCHC], increase in reticulocytes) do not require any additional tests </i></li><li>if the diagnosis is equivocal the BJH recommend the cryohaemolysis test and EMA binding</li><li>for atypical presentations electrophoresis analysis of erythrocyte membranes is the method of choice</li></ul><br>Management<br><ul><li>acute haemolytic crisis:<ul><li><span class="concept" data-cid="10602">treatment is generally supportive</span></li><li>transfusion if necessary</li></ul></li><li>longer term treatment:<ul><li>folate replacement</li><li><span class="concept" data-cid="7501">splenectomy</span></li></ul></li></ul><br>Comparing G6PD deficiency to hereditary spherocytosis:<br><br>
<center><img src="https://www.dropbox.com/s/c7z2ewrn97eq23o/g6pd-spherocytosis.png?raw=1" width="500"></center>
<div class="imagetext">Comparison of G6PD deficiency to hereditary spherocytosis</div><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>G6PD deficiency</b></th><th><b>Hereditary spherocytosis</b></th></tr></thead><tbody><tr><td><b>Gender</b></td><td>Male (X-linked recessive)</td><td>Male + female (autosomal dominant)</td></tr><tr><td><b>Ethnicity</b></td><td>African + Mediterranean descent</td><td>Northern European descent</td></tr><tr><td><b>Typical history</b></td><td>• Neonatal jaundice<br> • Infection/drugs precipitate haemolysis<br> • Gallstones</td><td>• Neonatal jaundice<br> • Chronic symptoms although haemolytic crises may be precipitated by infection<br> • Gallstones<br> • Splenomegaly is common</td></tr><tr><td><b>Blood film</b></td><td>Heinz bodies</td><td>Spherocytes (round, lack of central pallor)</td></tr><tr><td><b>Diagnostic test</b></td><td>Measure enzyme activity of G6PD</td><td>EMA binding test</td></tr></tbody></table></div></div>
!!!<center>''SPINAL EPIDURAL ABSCESS''</center>
<hr>
* Vancomycin (15 to 20 mg/kg IV every 8 to 12 hours PLUS
* Either cefotaxime (2 g IV every six hours) or ceftriaxone (2 g IV every 12 hours) or cefepime (2 g IV every 8 hours) or ceftazidime (2 g IV every 8 hours).
* Cefepime or ceftazidime is preferable when Pseudomonas aeruginosa is considered a possible or likely pathogen.
Spironolactone is an aldosterone antagonist which acts in the cortical collecting duct.
Indications
* ascites: patients with cirrhosis develop a secondary hyperaldosteronism. Relatively large doses such as 100 or 200mg are often used
* hypertension: used in some patients as a NICE 'step 4' treatment
* heart failure (see RALES study below)
* nephrotic syndrome
* Conn's syndrome
Adverse effects
* hyperkalaemia
* gynaecomastia: less common with eplerenone
RALES Study
* NYHA III + IV, patients already taking ACE inhibitor
* low dose spironolactone reduces all cause mortality
Massive splenomegaly
*myelofibrosis
*chronic myeloid leukaemia
*visceral leishmaniasis (kala-azar)
*malaria
*Gaucher's syndrome
Other causes (as above plus)
*portal hypertension e.g. secondary to cirrhosis
*lymphoproliferative disease e.g. CLL, Hodgkin's
*haemolytic anaemia
*infection: hepatitis, glandular fever
*infective endocarditis
*sickle-cell*, thalassaemia
*rheumatoid arthritis (Felty's syndrome)
the* majority of adults patients with sickle-cell will have an atrophied spleen due to repeated infarction
>Massive in 2 cancer - 2 infections - 1 storage
!!!<center>''SPONTANEOUS BACTERIAL PERITONITIS''</center>
<hr>
* Ceftriaxone 1 IV Q24H; Augmentin 875 PO BD; Moxifloxacin 400 IV/PO Q24H
<div id="notecontent">Squint (strabismus) is characterised by misalignment of the visual axes. Squints may be divided into concomitant (common) and paralytic (rare)<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Concomitant</b></th><th><b>Paralytic</b></th></tr></thead><tbody><tr><td>Due to imbalance in extraocular muscles<br>Convergent is more common than divergent</td><td>Due to paralysis of extraocular muscles</td></tr></tbody></table></div><br>Detection of a squint may be made by the corneal light reflection test - holding a light source 30cm from the child's face to see if the light reflects symmetrically on the pupils<br><br>The cover test is used to identify the nature of the squint<br><ul><li>ask the child to focus on a object</li><li>cover one eye</li><li>observe movement of uncovered eye</li><li>cover other eye and repeat test </li></ul><br>Management<br><ul><li>eye patches may help prevent amblyopia</li><li>referral to secondary care is appropriate</li></ul></div>
!!Selective serotonin reuptake inhibitors (SSRIs)
are considered first-line treatment for the majority of patients with depression.
* `citalopram (although see below re: QT interval) and fluoxetine are currently the preferred` SSRIs
* `sertraline is useful post myocardial infarction` as there is more evidence for its safe use in this situation than other antidepressants
* SSRIs should be used with caution `in children and adolescents. Fluoxetine is the drug of choice` when an antidepressant is indicated
!!!Adverse effects
* gastrointestinal symptoms are the most common side-effect
* there is an increased risk of gastrointestinal bleeding in patients taking SSRIs. `A proton pump inhibitor should be prescribed if a patient is also taking a NSAID/Aspirin`
* patients should be counselled to be vigilant for increased anxiety and agitation after starting a SSRI
* fluoxetine and paroxetine have a higher propensity for drug interactions
!!!Citalopram and the QT interval
* the Medicines and Healthcare products Regulatory Agency (MHRA) released a warning on the use of citalopram in 2011
* it advised that citalopram and escitalopram are associated with dose-dependent QT interval prolongation and should not be used in those with: congenital long QT syndrome; known pre-existing QT interval prolongation; or in combination with other medicines that prolong the QT interval
* the maximum daily dose is now 40 mg for adults; 20 mg for patients older than 65 years; and 20 mg for those with hepatic impairment
>CIT ~QuieT
*CITalopram causes QT prolongation
!!!Interactions
* NSAIDs: NICE guidelines advise 'do not normally offer SSRIs', but if given co-prescribe a proton pump inhibitor
* `warfarin / heparin: NICE guidelines recommend avoiding SSRIs and considering mirtazapine`
* aspirin: see above
* triptans - increased risk of serotonin syndrome
* monoamine oxidase inhibitors (MAOIs) - increased risk of serotonin syndrome
!!!Initiation and Stopping
* Following the initiation of antidepressant therapy patients should normally be reviewed by a doctor after 2 weeks.
* For patients under the age of 30 years or at increased risk of suicide they should be reviewed after 1 week.
* If a patient makes a good response to antidepressant therapy they should continue on treatment for at least 6 months after remission as this reduces the risk of relapse.
* When stopping a SSRI the dose should be gradually reduced over a 4 week period (this is not necessary with fluoxetine). Paroxetine has a higher incidence of discontinuation symptoms.
!!!Discontinuation symptoms
* increased mood change
* restlessness
* difficulty sleeping
* unsteadiness
* sweating
* gastrointestinal symptoms: pain, cramping, diarrhoea, vomiting
* paraesthesia
!!!SSRIs and pregnancy
* BNF says to weigh up benefits and risk when deciding whether to use in pregnancy.
* Use during the first trimester gives a small increased risk of congenital heart defects
* Use during the third trimester can result in persistent pulmonary hypertension of the newborn
* Paroxetine has an increased risk of congenital malformations, particularly in the first trimester
---
>CIT on PARO, inSERT & inFLUoX
*Citalopram-Paroxetine-Sertraline-Fluoxetine
---
> Sidefx: Food & Sex
* GI distress - Anorgasmia (so used for premature ejaculation)
---
>SSri PPi
*PPI when SSRI
---
>GI before - GI after
*GI bleed when starting on SSRI(PPI cover if on NSAID) - GI symptoms when discontinued
---
>CIT FLUOX in General - FLUOX in Kids - SERTRA post MI
---
>TIME 1246
* review in 1 wk if <30 - review in 2 wks normally - taper in 4wks when stopping - give at least 6m
---
<div id="notecontent">Overview<br><ul><li>shown to be as effective as tricyclic antidepressants in the treatment of mild-moderate depression</li><li>mechanism: thought to be similar to SSRIs (although noradrenaline uptake inhibition has also been demonstrated)</li><li>NICE advise 'may be of benefit in mild or moderate depression, but its use should not be prescribed or advised because of uncertainty about appropriate doses, variation in the nature of preparations, and potential serious interactions with other drugs'</li></ul><br><br>Adverse effects <br><ul><li>profile in trials similar to placebo</li><li>can cause serotonin syndrome</li><li><span class="concept" data-cid="9505">inducer of P450 system</span>, therefore decreased levels of drugs such as warfarin, ciclosporin. The effectiveness of the combined oral contraceptive pill may also be reduced</li></ul></div>
!!!<center>''STANDARD ORDERSETS''</center>
* Please admit the patient ↓ Dr. Ramakrishna in MICU/MW/FW/KW/SW
* ''Diet:'' NPO/Liquid diet/Regular Diet/Low Na, Low Fat Diet/Diabetic Diet
* ''Activity:'' Up ad lib / Up to chair with assistance / Ambulate with assistance / Bed rest with bathroom privileges with assistance / Bed rest with bedside commode with assistance / Bed rest / Other
* ''Vitals(BP, PR, RR, Temp, Sats):'' q1h / q2h / q4h / q6h / q8h / q12h
* ''Misc:'' Daily weights / NG tube to suction / Insert Foley / Insert NG
* ''IV FLUIDS:'' Inj NS/RL @ 75 ml/hr 25–30 ml/kg/day).
* ''IV Antibiotics:''
** Inj Ceftriaxone 1 gm IV q12h OR
** Inj Augmentin 1.2 gm IV q12h OR
** Inj Ciplox 400 mg IV q12h OR
** Inj Metrogyl 500 mg IV q8h OR
** Inj Pip-Taz 4.5 IV q8h OR
** Inj Mero 1 gm IV q8h OR
** Inj Levoflox 500 mg IV q24h
* If Diabetes or RBS>200 then monitor RBS with glucometer TDS or more frequently. Control sugars with sliding scale. If the patient is tolerating oral feeds the restart home DM meds.
* ''SOS meds:''
** ''Nausea/Vomiting:''
*** Inj Vomikind 4 mg IV q8h OR
*** Inj Stemetil 12.5 mg IV q6h OR
*** Inj Perinorm 10 mg IV q8h
** ''Acidity/reflux:''
*** Inj Aciloc 1 amp IV q12h OR
***Inj Pantop 40 mg IV OD
** ''Musculoskeletal pain:''
*** Inj Diclofenac 1 amp IV q12h
** ''Pain:''
*** Inj Tramadol 1 amp IV q12h
** ''Abdominal pain:''
*** Inj Anafortan 1 amp IV OR Inj Buscopan 1 amp IV OR
*** Inj Drotin 1 amp IV
** ''Pain, fever:''
*** Tab Calpol 500 mg q6h SOS pain/temp > 100.4F
** ''Anxiety/insomnia:''
*** Tab Lorazepam (Ativan) 1 mg STAT OR
*** Tab Alprazolam 0.25 mg OR
*** Tab Zolpidem 10 mg HS SOS insomnia
** ''Diarrhea:''
*** Tab Loperamide 4 mg 2 mg STAT FOR LOOSE STOOL
** ''Constipation:''
*** Syr Cremaffin Plus 2-3 tsp HS or
*** Supp Dulcolax 10 mg rectally STAT or
*** Syr Lactulose 30 ml HS or
*** P.C Enema STAT
* ''Labs:'' select the pertinent ones.<br> ⃞ RBS with glucometer STAT<br> ⃞ CBC<br> ⃞ ABG<br> ⃞ Hb,TC,DC,ESR<br> ⃞ KFT<br> ⃞ LFT<br> ⃞ FBS,PP<br> ⃞ Lipid Profile<br> ⃞ TSH <br> ⃞ HbA1c <br> ⃞ Widal <br> ⃞ MP card <br> ⃞ Urine routine with C/S<br> ⃞ Blood cultures<br> ⃞ RBS with Glucometer STAT<br> ⃞ CPK-MB <br> ⃞ Troponin-T<br> ⃞ Stool occult blood<br> ⃞ Sputum gram stain, AFB<br> ⃞ PT/INR<br> ⃞ Viral Markers<br> ⃞ Amylase <br> ⃞ Lipase
* ''Radiology:'' <br> ⃞ CXR-PA <br> ⃞ X-ray Abd erect <br> ⃞ USG abdomen<br> ⃞ CT head NC
* ''Cardiology:'' <br> ⃞ ECG <br> ⃞ 2D ECHO
* Order for blood transfusion if needed.
<hr>
{{Atrial Fibrillation Orders}}
<hr>
{{Bradycardia Orders}}
<hr>
{{CHF Orders}}
<hr>
{{STEMI Orders}}
<hr>
`Statins inhibit HMG-CoA reductase, the rate-limiting enzyme in hepatic cholesterol synthesis`
<div id="notecontent">Statins <span id="concept_popover_id_193" class="concept concept-3-u trigger-link" data-cid="193" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative193'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating193' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(96,255,0)'>Importance: <b>81</b></span> </div>" data-original-title="Statins inhibit HMG-CoA reductase, the rate-limiting enzyme in hepatic cholesterol synthesis">inhibit the action of HMG-CoA reductase, the rate-limiting enzyme in hepatic cholesterol synthesis</span>.<br><br>Adverse effects<br><ul><li>myopathy: includes <span class="concept" data-cid="9722">myalgia</span>, myositis, rhabdomyolysis and asymptomatic raised creatine kinase. Risks factors for myopathy include advanced age, female sex, low body mass index and presence of multisystem disease such as diabetes mellitus. Myopathy is more common in lipophilic statins (simvastatin, atorvastatin) than relatively hydrophilic statins (rosuvastatin, pravastatin, fluvastatin)</li><li>liver impairment: the 2014 NICE guidelines recommend checking LFTs at baseline, 3 months and 12 months. Treatment should be discontinued if serum transaminase concentrations rise to and persist at 3 times the upper limit of the reference range</li><li>there is some evidence that statins may increase the risk of intracerebral haemorrhage in patients who've previously had a stroke. This effect is not seen in primary prevention. For this reason the Royal College of Physicians recommend avoiding statins in patients with a history of intracerebral haemorrhage</li></ul><br>Contraindications<br><ul><li><span class="concept" data-cid="194">macrolides (e.g. erythromycin, clarithromycin) are an important interaction</span>. <span class="concept" data-cid="3084">Statins should be stopped until patients complete the course</span></li><li><span class="concept" data-cid="3334">pregnancy</span></li></ul><br>Who should receive a statin?<br><ul><li>all people with established cardiovascular disease (stroke, TIA, ischaemic heart disease, peripheral arterial disease)</li><li>following the 2014 update, <span class="concept" data-cid="5826">NICE recommend anyone with a 10-year cardiovascular risk >= 10%</span></li><li>patients with type 2 diabetes mellitus should now be assessed using QRISK2 like other patients are, to determine whether they should be started on statins</li><li>patients with type 1 diabetes mellitus who were diagnosed more than 10 years ago OR are aged over 40 OR have established nephropathy</li></ul><br>Statins should be taken at night as this is when the majority of cholesterol synthesis takes place. This is especially true for simvastatin which has a shorter half-life than other statins.<br><br>NICE currently recommends the following for the prevention of cardiovascular disease::<br><ul><li><span class="concept" data-cid="3368">atorvastatin 20mg for primary prevention</span><ul><li><span class="concept" data-cid="9707">increase the dose if non-HDL has not reduced for >= 40%</span></li></ul></li><li><span class="concept" data-cid="3368">atorvastatin 80mg for secondary prevention</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd915b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd915.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd915b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Graphic showing choice of statin.</div></div>
<div id="notecontent">A number of studies over the past 10 years have provided an evidence for the management of ST-elevation myocardial infarction (STEMI)<br><br>In the absence of contraindications, all patients should be given<br><ul><li><b>aspirin</b></li><li><b>P2Y12-receptor antagonist</b>. Clopidogrel was the first P2Y12-receptor antagonist to be widely used but now ticagrelor is often favoured as studies have shown improved outcomes compared to clopidogrel, but at the expense of slightly higher rates of bleeding. This approached is supported in SIGN's 2016 guidelines. They also recommend that prasugrel (another P2Y12-receptor antagonist) could be considered if the patient is going to have a percutaneous coronary intervention</li><li><b>unfractionated heparin</b> is usually given for patients who're are going to have a PCI. Alternatives include low-molecular weight heparin</li></ul><br>NICE suggest the following in terms of oxygen therapy:<br><ul><li>do not routinely administer oxygen, but monitor oxygen saturation using pulse oximetry as soon as possible, ideally before hospital admission. Only offer supplemental oxygen to:</li><li>people with oxygen saturation (SpO2) of less than 94% who are not at risk of hypercapnic respiratory failure, aiming for SpO2 of 94-98%</li><li>people with chronic obstructive pulmonary disease who are at risk of hypercapnic respiratory failure, to achieve a target SpO2 of 88-92% until blood gas analysis is available.</li></ul><br><span class="concept" data-cid="432">Primary percutaneous coronary intervention (PCI) has emerged as the gold-standard treatment for STEMI</span> but is not available in all centres. Thrombolysis should be performed in patients without access to primary PCI<br><br>With regards to thrombolysis:<br><ul><li>tissue plasminogen activator (tPA) has been shown to offer clear mortality benefits over streptokinase</li><li>tenecteplase is easier to administer and has been shown to have non-inferior efficacy to alteplase with a similar adverse effect profile</li></ul><br>An ECG should be performed 90 minutes following thrombolysis to assess whether there has been a greater than 50% resolution in the ST elevation<br><ul><li>if there has not been adequate resolution then rescue PCI is superior to repeat thrombolysis</li><li>for patients successfully treated with thrombolysis PCI has been shown to be beneficial. The optimal timing of this is still under investigation</li></ul><br>Glycaemic control in patients with diabetes mellitus<br><ul><li>in 2011 NICE issued guidance on the management of hyperglycaemia in acute coronary syndromes</li><li>it recommends using a dose-adjusted insulin infusion with regular monitoring of blood glucose levels to glucose below 11.0 mmol/l</li><li>intensive insulin therapy (an intravenous infusion of insulin and glucose with or without potassium, sometimes referred to as 'DIGAMI') regimes are not recommended routinely</li></ul></div>
---
!!!<center>''STEMI Criteria''</center>
<hr>
* ST Elevation Myocardial Infarction with onset of symptoms > 15 minutes and < 12 hours
* ST Elevation in at least 2 contiguous leads of > 1 mm in chest or the limb leads or > 2mm in men / > 1.5 mm in women in leads V2-V3
* New or presumed new LBBB with symptoms suggestive of acute myocardial infarction
* ST depression in > 2 precordial leads (V1-V4) may indicate posterior STEMI
# UA: + STD and/or TWI, Top –ve;
# NSTEMI: + STD and/or TWI, Top +ve;
# STEMI: STE, Trop +ve;
* ECG: STD/STE, TWI, new LBBB; Qw or PRWP suggest prior MI and ∴ CAD
|!Localization of MI|<|<|
|!Anatomic Area|!ECG Leads w/ STE|!Coronary Artery|
|Septal|V1–V2 + aVR|Proximal LAD|
|Anterior|V3–V4|LAD|
|Apical|V5–V6|Distal LAD, LCx, or RCA|
|Lateral|I, aVL|LCx|
|Inferior|II, III, aVF|RCA (85%), LCx (15%)|
|RV|V1–V2 & V4R (most Se)|Proximal RCA|
|Posterior|ST depression V1–V3(=STE in V7-V9) post leads, √ if clinical susp)|RCA or LCx|
* ECG STAT
* Loading dose STAT (Tab. Clopidogrel 300 mg, Tab. Ecosprin 300 mg and Tab Atorva 80 mg ); Clopidogrel 75 mg if >75 yrs
* PCI within 90 min; Fibrinolytic therapy within 30 min.
* Fibrinolysis: Indic: STE/LBBB + Symp <12hrs; check contraindications
* Absolute contraindications
** Any prior ICH
** Known structural cerebral vascular lesion (e.g., anteriovenous malformation)
** Known malignant intracranial neoplasm (primary or metastatic
** Ischemic stroke within 3 months , EXCEPT acute ischemic stroke within 4.5 hours
** Suspected aortic dissection
** Active bleeding or bleeding diathesis (excluding menses)
** Significant closed-head or facial trauma within 3 months
** Intracranial or intraspinal surgery within 2 months
** Severe uncontrolled hypertension (unresponsive to emergency therapy)
* Inj Streptokinase 1.5 million units in 100 ml NS over 30 to 60 min
* Thrombolysis at the earliest, best response if used within 6 hrs of onset, can be used up to 12-24 hrs.
* Can give 100 mg Hydrocortisone and 25 mg Avil IV before Streptokinase
* Labs: CBC, KFT, LFT, Troponin-T, PT/INR, Fasting Lipid Profile, TSH, HgA1C if diabetic, CXR PA, 2D Echo
* Tab Metolar XR 25 mg q12h, titrate to HR 50–60; Contraindicated if HR < 60, SBP <90, PR>0.24, sec or third deg AVB, severe bronchospasm, s/s HF
* Oxygen 2 L/min via nasal cannula (to maintain sats >92%)
* Tab Sorbitrate 5 mg SOS chest pain
* NTG drip 1 amp in 50 cc NS, start at 0.6 ml/hr
* Inj Morphine 2 mg IV STAT IV SOS for anxiety
* Inj Enoxaparin (Lorapin) 30 mg IV bolus then after 15 minutes 1mg/kg SQ *Max dose 100mg ( If pt >65 yrs then no bolus and 0.75 mg/kg SQ *Max dose 75 mg/kg)
* Unfractionated Heparin: Bolus: 60 U/kg IV (max 4000U) Infusion: 12 U/kg/hr IV (max 1000U/hr;goal PTT 1.5-2.0
* ECG 90 min and 4 hr post STK
* ECG stat if any recurrence of chest pain.
* Apply pressure dressing to puncture sites (including venipunctures)
* Avoid unnecessary invasive procedures
* Do not give any IM injections
* Next days orders
* Tab. Clopitab 75 mg OD
* Tab. Ecosprin 150/75 mg OD
* Tab Atorva 80 mg OD
* Tab Ramipril 2.5-5 mg OD (start 12 hrs after admission).once hemodynamically and renal function stable. If EF<40, HTN, DM, CKD, ant STEMI, prior MI
* Maintain K > 4.0 and Mg >2.0
* CCB (DIltiazem, Verapamil, amlodipine) If cannot tolerate BB b/c bronchospasm. Avoid in CHF and LV dysfunction. Dilzem 30-60 mg q8h
* Inj LMWX 0.6 sc q12h 5 days
* Inj. Amiodarone (150 mg over 10 min then 1 mg/min x 6 hours then 0.5 mg/min x 18 hours)
* Mix 3 mL(1 amp) in 100 mL D5W and pass in 10 min then add 6 amp (18 ml) in 500 ml 5% Dextrose and pass 200 mL over next 6 hours (11 dps/min) and 300 mL over next 18 hours (5 dps/min).
* ''LV failure: CHF protocol''
* If hypoxic then BIPAP or Ventilator support
* Central line with CVP monitoring for fluid resuscitation.
* Correct hypokalemia, hypomagnesemia, and acidosis
* Inj Sod bicarb for severe metabolic acidosis (arterial pH <7.10 to 7.15)
* Continue Aspirin and heparin
* No BB or CCB
* Inj. Lasix 40 mg IV q12h
* NTG drip if BP tolerates.
* Captopril 50 mg BD
* If not responding use dopamine, dobutamine, Norepinephrine (for refractory hypotension)
* Start with Dopamine at 5-10 mcg/kg/min
* Next choice Norad 0.5 mcg/kg/min and titrated to maintain an MAP of 60 mm Hg.
* Dobutamine is limited to less sick patients with a low cardiac index, high PCWP, and borderline BP without frank hypotension.
* 250 ml bolus and careful fluids
* Immediate angiography and plasty
* Refractory polymorphic VT: BB, IABP, emergency revascularization.
* VF: SHOCK 120-200 joules.
* Following successful reversion to sinus rhythm, patients should be treated with intravenous amiodarone for 24 to 48 hours. The dosing schedule is similar to that used for sustained VT
* ''Arrhythmias post-MI''
* Treat as per ACLS for unstable or symptomatic bradycardias & tachycardias
* AF: Inj Dilzem 5 mg IV STAT (Initial bolus: 0.25 mg/kg over 2 min (ave adult dose: 20 mg); rec 15-20 mg); Repeat after 15 min if the response is inadequate): 0.35 mg/kg over 2 minutes (ave: 25 mg); ACLS 20-25 mg
* Inj. Amiodarone (150 mg over 10 min then 1 mg/min x 6 hours then 0.5 mg/min x 18 hours)
* Mix 3 mL(1 amp) in 100 mL D5W and pass in 10 min then add 6 amp (18 ml) in 500 ml 5% Dextrose and pass 200 mL over next 6 hours (11 dps/min) and 300 mL over next 18 hours (5 dps/min).
* VT/VF: Amiodarone 6–24 h, then reassess
* ''Ventricular arrhythmias during acute myocardial infarction:''
** VENTRICULAR PREMATURE BEATS: antiarrythmic drugs NOT recommended
** NONSUSTAINED V TACH: <30 sec, drugs NOT recommended
** Accelerated ventricular rhythm: HR 70/min. The P waves are dissociated from the QRS complexes and occur at rate which is slower than the RR interval. Are transient and require no treatment.
** SUSTAINED V TACH: >30 sec; termination (eg, cardioversion) within 30 seconds.
** Sustained polymorphic VT and pulseless monomorphic VT: Shock 120-200 joules.
** Sustained monomorphic VT ass with angina, pulm edema, or hypotension (SBP <90): synchronized electrical cardioversion; st with 100 J. Can inc if no response, Brief anesthesia is desirable if hemodynamically tolerable.
** Sustained monomorphic VT that is hemodynamically tolerated and asymptomatic: IV amiodarone. Synchronized electrical cardioversion with brief anesthesia should be performed if VT persists after 150 mg of amiodarone.
** Rec SMVT or VF that is not due to a reversible cause, such as hypokalemia, ischemia, or heart failure: IV amiodarone (150 mg over 10 min, foll by 1 mg/min for 6hrs, then 0.5 mg/min for 18 hrs)
* ''Conduction abnormalities after MI:''
** Complete heart block (CHB) with inferior MI: It often results in an asymptomatic brady (40-60/min): usually transient, resolving within 5-7ds.
** Atropine is administered in 0.5 mg or 1 mg increments to a total of 3 mg.
** Isoprenaline drip: 2 mg in 500 ml NS, start at 2-10 mcg/min = 30-150 micro dps/min, or if added to 50 cc NS, start at 3-15 ml/hr.
** Refractory hypotension after correction of the bradycardia with atropine usually indicates volume depletion or concurrent right ventricular infarction. Volume infusion is the treatment of choice in this setting.
** Bradyarrhythmias that occur early in the setting of an inferior MI (within the first 24 hours) may respond to atropine, while those occurring later are often atropine-resistant. Treatment is not indicated in asymptomatic patients, but is useful if symptoms are present, such as dizziness, syncope, or confusion from reduced cardiac output.
** Consider temporary transvenous pacing in the following circumstances: Complete (third-degree) heart block. Alternating right and left bundle branch block. RBBB with alternating left anterior or posterior fascicular block. New or age indeterminate bifascicular block (RBBB with left anterior or posterior fascicular block or left bundle branch block) with PR prolongation. Asystole. Symptomatic bradycardia of any etiology, including sinus bradycardia and Mobitz type I second degree AV block, if hypotension is present and the bradyarrhythmia is not responsive to atropine. Mobitz type II second-degree AV block. Bradycardia-induced tachyarrhythmias.
!!!<center>''STEMI ORDERSET''</center>
* Connect to cardiac monitor
* Give Loading Dose
** Tab. Aspirin(Ecosprin) 300 mg STAT, then 75 mg OD
** Tab. Clopidogrel(Clopitab) 300 mg STAT, then 75 mg OD
** Tab Atorvastatin(Atorva) 80 mg STAT and then OD
* Inj Morphine 2 mg IV STAT, sos for chest pain
* Oxygen 2 L/min via nasal cannula (to maintain sats >92%)
* Tab Sorbitrate 5 mg SOS
* Inj NTG drip 1 amp in 50 cc NS, start at 0.6 ml/hr
* Cap Metolar XR 25–50 mg PO q6h titrate to HR 50–60; Contraindicated if HR < 60, SBP <90, PR>0.24, sec or third deg AVB, severe bronchospasm, s/s HF
* Inj Enoxaparin (Lorapin) 60 mg SQ q12h
* Inj Streptokinase 1.5 million units in 100 ml NS over 30 to 60 min
* Labs: CBC, KFT, LFT, Troponin-T, PT, INR, PTT, Fasting Lipid Profile, TSH, HgA1C, Urinalysis, ECG, CXR PA, 2D Echo
<div id="notecontent">Strokes represent an important cause of morbidity and mortality. In the UK alone there are over 150,000 strokes per year, with over 1.2 million stroke survivors. Stroke is the fourth largest cause of death in the UK and kills twice as many women than breast cancer each year.<br><br>The prevention and treatment of strokes has undergone significant changes over the past decade. What was previously considered a devastating but untreatable condition is now viewed more as a 'brain attack', a condition which requires emergency assessment to see if patients may benefit from new treatments such as thrombolysis.<br><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb087b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb087.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb087b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Pathological specimen showing the results of an ischaemic stroke to the occipito-parietal region of the cerebrum. Note there has been some secondary haemorrhage in the affected area.<br></div><br><br><b>What is a stroke?</b><br><br>A stroke (also known as cerebrovascular accident,CVA) represents a sudden interruption in the vascular supply of the brain. Remember that neural tissue is completely dependent on aerobic metabolism so any problem with oxygen supply can quickly lead to irreversible damage.<br><br>There are two main types of strokes:<br><ul><li>ischaemic: these can be further subdivided between into episodes which last greater than 24 hours (termed an ischaemic stroke) and episodes where symptoms and signs last less than 24 hours (transient ischaemic attacks, TIAs, sometimes termed 'mini-strokes' by patients)</li><li>haemorrhagic</li></ul><br>The table below shows the basic differences:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th>Ischaemic</th><th>Haemorrhagic</th></tr></thead><tbody><tr><td><b>Essential problem</b></td><td>'Blockage' in the blood vessel stops blood flow</td><td>Blood vessel 'bursts' leading to reduction in blood flow</td></tr><tr><td><b>Proportion of strokes</b></td><td><span class="concept" data-cid="7965">85%</span></td><td><span class="concept" data-cid="7969">15%</span></td></tr><tr><td><b>Subtypes</b></td><td>Thrombotic stroke<br><ul><li>thrombosis from large vessels e.g. carotid</li></ul><br>Embolic stroke<br><ul><li>usually a blood clot but fat, air or clumps of bacteria may act as an embolus</li><li><span class="concept" data-cid="7967">atrial fibrillation</span> is an important cause of emboli forming in the heart</li></ul></td><td>Intracerebral haemorrhage<br><ul><li>bleeding within the brain</li></ul><br>Subarachnoid haemorrhage <br><ul><li>bleeding on the surface of the brain</li></ul></td></tr><tr><td><b>Risk factors</b></td><td>General risk factors for cardiovascular disease<br><ul><li>age</li><li>hypertension</li><li>smoking</li><li>hyperlipidaemia</li><li>diabetes mellitus</li></ul><br>Risk factors for cardioembolism<br><ul><li>atrial fibrillation</li></ul></td><td>Risk factors<br><ul><li>age</li><li>hypertension</li><li><span class="concept" data-cid="7970">arteriovenous malformation</span></li><li>anticoagulation therapy</li></ul></td></tr></tbody></table></div><br><br><b>Symptoms and signs</b><br><br>Stroke is defined by the World Health Organization as a clinical syndrome consisting of 'rapidly developing clinical signs of focal (at times global) disturbance of cerebral function, lasting more than 24 hours or leading to death with no apparent cause other than that of vascular origin'. In contrast, with a TIA the symptoms and signs resolve within 24 hours.<br><br>Features include:<br><ul><li>motor weakness</li><li>speech problems (dysphasia)</li><li>swallowing problems</li><li>visual field defects (homonymous hemianopia)</li><li>balance problems</li></ul><br>Cerebral hemisphere infarcts may have the following symptoms:<br><ul><li>contralateral hemiplegia: initially flaccid then spastic</li><li>contralateral sensory loss</li><li>homonymous hemianopia</li><li>dysphasia</li></ul><br>Brainstem infarction<br><ul><li>may result in more severe symptoms including quadriplegia and lock-in-syndrome </li></ul><br>Lacunar infarcts<br><ul><li>small infarcts around the basal ganglia, internal capsule, thalamus and pons</li><li>this may result in pure motor, pure sensory, mixed motor and sensory signs or ataxia</li></ul><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb088b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb088.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb088b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">An example of a lacunar infarct affecting the internal capsule.<br></div><br><br><br>One formal classification system that is sometimes used is the <b>Oxford Stroke Classification</b> (also known as the Bamford Classification), whichclassifies strokes based on the initial symptoms. A summary is as follows:<br><br>The following criteria should be assessed:<br><ul><li>1. unilateral hemiparesis and/or hemisensory loss of the face, arm & leg</li><li>2. homonymous hemianopia</li><li>3. higher cognitive dysfunction e.g. dysphasia</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Stroke type</th><th>Notes</th></tr></thead><tbody><tr><td>Total anterior circulation infarcts (TACI, c. 15%)</td><td><ul><li><span id="concept_popover_id_7972" class="concept concept-0 trigger-link" data-cid="7972" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7972'>You've never been tested on this concept</div><br><div id='div_concept_rating7972' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(30,255,0)'>Importance: <b>94</b></span> </div>" data-original-title="Total anterior circulation infarcts - involves middle and anterior cerebral arteries">involves middle and anterior cerebral arteries</span></li><li><span class="concept" data-cid="7975">all 3 of the above criteria are present</span></li></ul></td></tr><tr><td>Partial anterior circulation infarcts (PACI, c. 25%)</td><td><ul><li>involves smaller arteries of anterior circulation e.g. upper or lower division of middle cerebral artery</li><li>2 of the above criteria are present</li></ul></td></tr><tr><td>Lacunar infarcts (LACI, c. 25%)</td><td><ul><li><span class="concept" data-cid="7973">involves perforating arteries around the internal capsule, thalamus and basal ganglia</span></li><li><span class="concept" data-cid="7976">presents with 1 of the following</span>:</li><li>1. unilateral weakness (and/or sensory deficit) of face and arm, arm and leg or all three.</li><li>2. pure sensory stroke.</li><li>3. ataxic hemiparesis</li></ul></td></tr><tr><td>Posterior circulation infarcts (POCI, c. 25%)</td><td><ul><li><span class="concept" data-cid="7974">involves vertebrobasilar arteries</span></li><li>presents with 1 of the following:</li><li>1. <span class="concept" data-cid="7977">cerebellar</span> or brainstem syndromes</li><li>2. loss of consciousness</li><li>3. isolated homonymous hemianopia</li></ul></td></tr></tbody></table></div><br>Whilst symptoms alone cannot be used to differentiate haemorrhagic from ischaemic strokes, patients who've suffered haemorrhages are more likely to have:<br><ul><li><span class="concept" data-cid="7971">decrease in the level of consciousness</span>: seen in up to 50% of patients with a haemorrhagic stroke</li><li><span class="concept" data-cid="7971">headache</span> is also much more common in haemorrhagic stroke</li><li><span class="concept" data-cid="7971">nausea and vomiting</span> is also common</li><li>seizures occur in up to 25% of patients</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb089b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb089.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb089b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Pathological specimen showing the consequence of an intracerebral haemorrhage<br></div><br>Over recent years there has been a public health campaign to raise awareness of stroke symptoms. The <b>FAST campaign</b> uses the following mnemonic:<br><ul><li><b>F</b>ace - 'Has their face fallen on one side? Can they smile?'</li><li><b>A</b>rms - 'Can they raise both arms and keep them there?'</li><li><b>S</b>peech - 'Is their speech slurred?'</li><li><b>T</b>time - 'Time to call 999 if you see any single one of these signs.'</li></ul><br><br><b>Investigations</b><br><br>Patients with suspected stroke need to have emergency neuroimaging. The main cause for urgency is to see whether a patient may be suitable for thrombolytic therapy to treat early ischaemic strokes. The two types of neuroimaging used in this setting are:<br><ul><li>CT</li><li>MRI</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb030b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb030.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb030b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">CT scan of the brain showing a right-hemispheric ischemic stroke</div><br><br><b>Management</b><br><br><b>Ischaemic strokes</b><br><br>Urgent neuroimaging classifies the stroke as either ischaemic or haemorrhagic. If the stroke is ischaemic, and certain criteria are met, the patient should be offered <span class="concept" data-cid="7966">thrombolysis</span>. Example criteria include:<br><ul><li>patients present with 4.5 hours of onset of stroke symptoms</li><li>the patient has not had a previous intracranial haemorrhage, uncontrolled hypertension, pregnant etc</li></ul><br>Once haemorrhagic stroke has been excluded patients should be given aspirin 300mg as soon as possible and antiplatelet therapy should be continued.<br><br><b>Transient ischaemic attacks</b><br><br>Remember with TIAs the, by definition, symptoms last less than 24 hours although in the vast majority of cases the duration is much shorter, typically 1 hour or so. For this reason most patients symptoms will have resolved before they see a doctor.<br><br>The ABCD2 prognostic score has previously been used to risk stratify patients who present with a suspected TIA. However, data from studies have suggested it performs poorly and it is therefore no longer recommended by NICE Clinical Knowledge Summaries. Instead, NICE recommend:<br><br>Immediate antithrombotic therapy:<br><ul><li>give aspirin 300 mg immediately, unless contraindicated e.g. the patient has a bleeding disorder or is taking an anticoagulant (needs immediate admission for imaging to exclude a haemorrhage)</li></ul><br>If the patient has had more than 1 TIA ('crescendo TIA') or has a suspected cardioembolic source or severe carotid stenosis:<br><ul><li>discuss the need for admission or observation urgently with a stroke specialist</li></ul><br>If the patient has had a suspected TIA in the last 7 days:<br><ul><li>arrange urgent assessment (within 24 hours) by a specialist stroke physician</li></ul><br>If the patient has had a suspected TIA which occurred more than a week previously:<br><ul><li>refer for specialist assessment as soon as possible within 7 days</li></ul><br><b>Haemorrhagic strokes</b><br><br>If imaging confirms a haemorrhagic stroke neurosurgical consultation should be considered for advice on further management. The vast majority of patients however are not suitable for surgical intervention. Management is therefore supportive as per haemorrhagic stroke. Anticoagulants (e.g. warfarin) and antithrombotic medications (e.g. clopidogrel) should be stopped to minimise further bleeding. If a patient is anticoagulated this should be reversed as quickly as possible. Trials have shown improved outcomes in patients who have their blood pressure lowered acutely and this is now part of many protocols for haemorrhagic strokes.</div>
<div id="notecontent">The Royal College of Physicians (RCP) published guidelines on the diagnosis and management of patients following a stroke in 2004. NICE updated their stroke guidelines in 2019.<br><br>Selected points relating to the management of acute stroke include:<br><ul><li>blood glucose, hydration, oxygen saturation and temperature should be maintained within normal limits</li><li><span class="concept" data-cid="213">blood pressure should not be lowered</span> in the acute phase unless there are complications e.g. Hypertensive encephalopathy*</li><li>aspirin 300mg orally or rectally should be given as soon as possible if a haemorrhagic stroke has been excluded</li><li>with regards to atrial fibrillation, the RCP state: 'anticoagulants should not be started until brain imaging has excluded haemorrhage, and usually not until 14 days have passed from the onset of an ischaemic stroke'</li><li>if the cholesterol is > 3.5 mmol/l patients should be commenced on a statin. Many physicians will delay treatment until after at least 48 hours due to the risk of haemorrhagic transformation</li></ul><br><br><b>Thrombolysis for acute ischaemic stroke</b><br><br>Thrombolysis with alteplase should only be given if:<br><ul><li>it is administered within <span class="concept" data-cid="214">4.5 hours of onset</span> of stroke symptoms (unless as part of a clinical trial)</li><li><span class="concept" data-cid="214">haemorrhage has been definitively excluded</span> (i.e. Imaging has been performed)</li></ul><br>Contraindications to thrombolysis:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Absolute</th><th> Relative</th></tr></thead><tbody><tr><td>- Previous intracranial haemorrhage<br>- Seizure at onset of stroke<br>- Intracranial neoplasm<br>- Suspected subarachnoid haemorrhage<br>- Stroke or traumatic brain injury in preceding 3 months<br>- Lumbar puncture in preceding 7 days<br>- Gastrointestinal haemorrhage in preceding 3 weeks<br>- Active bleeding<br>- <span id="concept_popover_id_4056" class="concept concept-0 trigger-link" data-cid="4056" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4056'>You've never been tested on this concept</div><br><div id='div_concept_rating4056' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(122,255,0)'>Importance: <b>76</b></span> </div>" data-original-title="Pregnancy is an absolute contraindication for thrombolysis">Pregnancy</span><br>- Oesophageal varices<br>- Uncontrolled hypertension >200/120mmHg </td><td>- Concurrent anticoagulation (INR >1.7)<br>- Haemorrhagic diathesis<br>- Active diabetic haemorrhagic retinopathy<br>- Suspected intracardiac thrombus<br>- Major surgery / trauma in the preceding 2 weeks</td></tr></tbody></table></div><br><br><b>Thrombectomy for acute ischaemic stroke</b><br><br>Mechanical thrombectomy is an exciting new treatment option for patients with an acute ischaemic stroke. NICE incorporated recommendations into their 2019 guidelines. It is important to remember the significant resources and senior personnel to provide such a service 24 hours a day. NICE recommend that all decisions about thrombectomy take into account a patient's overall clinical status:<br><ul><li>NICE recommend a pre-stroke functional status of less than 3 on the modified Rankin scale and a score of more than 5 on the National Institutes of Health Stroke Scale (NIHSS)</li></ul><br>Offer thrombectomy as soon as possible and within <span class="concept" data-cid="9594">6 hours of symptom onset</span>, together <span class="concept" data-cid="9596">with intravenous thrombolysis (if within 4.5 hours)</span>, to people who have:<br>acute ischaemic stroke and<br><ul><li>confirmed occlusion of the <b>proximal anterior circulation</b> demonstrated by computed tomographic angiography (CTA) or magnetic resonance angiography (MRA) </li></ul><br>Offer thrombectomy as soon as possible to people who were last known to be well between <span class="concept" data-cid="9595">6 hours and 24 hours previously (including wake-up strokes)</span>:<br><ul><li>confirmed occlusion of the <b>proximal anterior circulation</b> demonstrated by CTA or MRA and</li><li>if there is the <span class="concept" data-cid="9595">potential to salvage brain tissue, as shown by imaging such as CT perfusion or diffusion-weighted MRI sequences showing limited infarct core volume</span></li></ul><br><i>Consider</i> thrombectomy together with intravenous thrombolysis (if within 4.5 hours) as soon as possible for people last known to be well up to 24 hours previously (including wake-up strokes):<br><ul><li>who have acute ischaemic stroke and confirmed occlusion of the <b>proximal posterior circulation (that is, basilar or posterior cerebral artery)</b> demonstrated by CTA or MRA and</li><li>if there is the potential to salvage brain tissue, as shown by imaging such as CT perfusion or diffusion-weighted MRI sequences showing limited infarct core volume</li></ul><br><br><b>Secondary prevention</b><br><br>NICE also published a technology appraisal in 2010 on the use of clopidogrel and dipyridamole<br><br>Recommendations from NICE include:<br><ul><li><span class="concept" data-cid="10231">clopidogrel is now recommended</span> by NICE ahead of combination use of aspirin plus modified-release (MR) dipyridamole in people who have had an ischaemic stroke</li><li><span class="concept" data-cid="10232">aspirin plus MR dipyridamole is now recommended after an ischaemic stroke only if clopidogrel is contraindicated or not tolerated</span>, but treatment is no longer limited to 2 years' duration</li><li><span id="concept_popover_id_4058" class="concept concept-0 trigger-link" data-cid="4058" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4058'>You've never been tested on this concept</div><br><div id='div_concept_rating4058' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(112,255,0)'>Importance: <b>78</b></span> </div>" data-original-title="After an ischaemic stroke, if aspirin and clopidogrel are both contraindicated, MR dipyridamole can be given">MR dipyridamole</span> alone is recommended after an ischaemic stroke only if aspirin or clopidogrel are contraindicated or not tolerated, again with no limit on duration of treatment</li></ul><br>With regards to carotid artery endarterectomy:<br><ul><li>recommend if patient has suffered stroke or TIA in the <span class="concept" data-cid="4059">carotid territory and are not severely disabled</span></li><li>should only be considered if carotid stenosis > 70% according ECST** criteria or > 50% according to NASCET*** criteria</li></ul><br>*the 2009 Controlling hypertension and hypotension immediately post-stroke (CHHIPS) trial may change thinking on this but guidelines have yet to change to reflect this<br>**European Carotid Surgery Trialists' Collaborative Group<br>***North American Symptomatic Carotid Endarterectomy Trial</div>
|!Site of the lesion|!Associated effects|
|!Anterior cerebral artery |Contralateral hemiparesis and sensory loss, <br>lower extremity > upper|
|!Middle cerebral artery |Contralateral hemiparesis and sensory loss, <br>upper extremity > lower<br>Contralateral homonymous hemianopia<br>Aphasia|
|!Posterior cerebral artery |Contralateral homonymous hemianopia with macular sparing Visual agnosia|
|!Weber's syndrome (branches of the posterior cerebral artery that supply the midbrain) |Ipsilateral CN III palsy<br>Contralateral weakness of upper and lower extremity|
|!Posterior inferior cerebellar artery (lateral medullary syndrome, Wallenberg syndrome) |Ipsilateral: facial pain and temperature loss<br>Contralateral: limb/torso pain and temperature loss<br>Ataxia, nystagmus|
|!Anterior inferior cerebellar artery (lateral pontine syndrome) |Symptoms are similar to Wallenberg's (see above), <br>but:<br>Ipsilateral: facial paralysis and deafness|
|!Retinal/ophthalmic artery |Amaurosis fugax|
|!Basilar artery |'Locked-in' syndrome|
;Lacunar strokes
* present with either isolated hemiparesis, hemisensory loss or hemiparesis with limb ataxia
* strong association with hypertension
* common sites include the basal ganglia, thalamus and internal capsule
---
> PCA is all about EYE
*PCA: Visual field loss with Macula sparing in Occipetal Lobe - Mydriasis-Ptosis-Lateral Strabismus in Midbrain
>WEBER's Pupil is Dilated - HORNER's is MIOsis (HORNY MAYA)
>WEBER is III + CONTRALATERAL PALSY
*III*(mydriasis - ptosis - LatStrabismus) - CST - Corticobulbar (contralateral lower half)
*Medial(ventral) MidBrain Syndrome - Post Cerebral A mid brain braches
---
>PONS 6-78 (6 is Medial - 7,8 is Lateral)
>MEDULLA 12-10 (12 is Medial - 10 is Lateral)
>CN + LIMB HEMIPARESIS+proprioception = MEDIAL syndromes
>LATERAL PAINTEMP
*CN + LIMB PAINTEMP = LATERAL syndromes (PICA or AICA)
---
>TONGUE-HEMIPARESIS-PROPRIOCEPTION
*Medial Medullary Syndrome
---
>FIRE INJURY PROOF WALL
*IPSI FACIAL PAINTEMP + Contra BODY PAIN TEMP in WALLenberg
>WALLENBERG has PICA but cannot Swallow, vomits and hoarseness - this is LE MI
>AISHA ISPI FLAT FACE & DEAF - AISHA ni LE PI
*AICA - IPSI lateral FACIAL PALSY - HEARING LOSS - LAteral POntine Syndrome
---
>LAS VEGAS
*VAGUS is LATERAL
;COMMON to PICA and AICA
*CONTRA LIMB PAINTEMP
*IPSI FACE PAINTEMP (Trigeminal Nucleus)
*IPSI Dysphagia-Hoarseness-↓Gag
*Vertigo-Diplopia-Nystagmus-Vomiting
*IPSI Horner's
*IPSI Ataxia
---
>EYE-HEMIPARESIS-PROPRIOCEPTION
>MEDIAL SQUINTED LIMPING PONTIFF
>MEDIAL STRABISMUS in MEDIAL PONTINE
*MEDIAL SQUINT - MEDIAL Pontine Syndrome - Paramedian Br of Basilar
*VI - Contralateral Hemiparesis(CST) - Medial Lemniscus (cmp: MedMedullary)
---
<div id="body_content">
<i>Strongyloides stercoralis</i> is a human parasitic nematode worm. The larvae are present in soil and gain access to the body by <span class="concept" data-cid="1057">penetrating the skin</span>. Infection with <i>Strongyloides stercoralis</i> causes strongyloidiasis.<br><br>Features<br><ul><li>diarrhoea</li><li>abdominal pain/bloating</li><li>papulovesicular lesions where the skin has been penetrated by infective larvae e.g. <span class="concept" data-cid="9146">soles of feet and buttocks</span></li><li>larva currens: pruritic, linear, urticarial rash</li><li>if the larvae migrate to the lungs a pneumonitis similar to Loeffler's syndrome may be triggered</li></ul><br>Treatment<br><ul><li><span class="concept" data-cid="6410">ivermectin</span> and albendazole are used</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb030b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb030.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb030b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Diagram showing the lifecycle of <i>Strongyloides stercoralis</i></div></div>
---
>STRONGLY penetrate SKIN
---
<div id="body_content">
Subacute thyroiditis (also known as De Quervain's thyroiditis and subacute granulomatous thyroiditis) is thought to occur following viral infection and typically presents with hyperthyroidism.<br><br>There are typically <span class="concept" data-cid="2066">4 phases</span>;<br><ul><li>phase 1 (lasts 3-6 weeks): hyperthyroidism, <span class="concept" data-cid="824">painful goitre</span>, <span class="concept" data-cid="9398">raised ESR</span></li><li>phase 2 (1-3 weeks): euthyroid</li><li>phase 3 (weeks - months): hypothyroidism</li><li>phase 4: thyroid structure and function goes back to normal</li></ul><br>Investigations<br><ul><li>thyroid scintigraphy: <span class="concept" data-cid="8282">globally reduced uptake of iodine-131</span></li></ul><br>Management<br><ul><li>usually self-limiting - most patients do not require treatment</li><li>thyroid pain may respond to aspirin or other <span class="concept" data-cid="6405">NSAIDs</span></li><li>in more severe cases steroids are used, particularly if hypothyroidism develops</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd917b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Venn diagram showing how different causes of thyroid dysfunction may manifest. Note how many causes of hypothyroidism may have an initial thyrotoxic phase.</div></div>
<div id="notecontent">Basics<br><ul><li>TSH raised but T3, T4 normal</li><li>no obvious symptoms</li></ul><br>Significance<br><ul><li>risk of progressing to overt hypothyroidism is 2-5% per year (higher in men)</li><li>risk increased by the presence of <span class="concept" data-cid="10755">thyroid autoantibodies</span></li></ul><br><b>Management</b><br><br>Not all patients require treatment. NICE Clinical Knowledge Summaries (CKS) have produced guidelines. Note that not all patients will fall within the age boundaries given and hence these are guidelines in the broader sense.<br><br>TSH is between 4 - 10mU/L and the free thyroxine level is within the normal range<br><ul><li>if < 65 years with symptoms suggestive of hypothyroidism, give a trial of levothyroxine. If there is no improvement in symptoms, stop levothyroxine</li><li>'in older people (especially those aged over 80 years) follow a 'watch and wait' strategy, generally avoiding hormonal treatment'</li><li>if asymptomatic people, observe and repeat thyroid function in 6 months</li></ul><br><span class="concept" data-cid="2333">TSH is > 10mU/L</span> and the free thyroxine level is within the normal range<br><ul><li>start treatment (even if asymptomatic) with levothyroxine if <= 70 years</li><li><span class="concept" data-cid="4397">'in older people (especially those aged over 80 years) follow a 'watch and wait' strategy</span>, generally avoiding hormonal treatment'</li></ul></div>
<div id="body_content">
Sudden loss is a frightening symptom for patients. It may represent an ongoing issue or only be temporary. The term transient monocular visual loss (TVML) describes a sudden, transient loss of vision that lasts less than 24 hours. <br><br>The most common causes of a sudden painless loss of vision are as follows:<br><ul><li>ischaemic/vascular (e.g. thrombosis, embolism, temporal arteritis etc). This includes recognised syndromes e.g. occlusion of central retinal vein and occlusion of central retinal artery</li><li>vitreous haemorrhage</li><li>retinal detachment</li><li><span class="concept" data-cid="4503">retinal migraine</span></li></ul><br>Ischaemic/vascular<br><ul><li>often referred to as 'amaurosis fugax'</li><li>wide differential including large artery disease (atherothrombosis, embolus, dissection), small artery occlusive disease (anterior ischemic optic neuropathy, vasculitis e.g. temporal arteritis), venous disease and hypoperfusion</li><li>may represent a form of <span class="concept" data-cid="8607">transient ischaemic attack</span> (TIA). It should therefore be treated in a similar fashion, with <span class="concept" data-cid="8757">aspirin 300mg</span> being given</li><li>altitudinal field defects are often seen: '<span class="concept" data-cid="4807">curtain</span> coming down'</li><li>ischaemic optic neuropathy is due to occlusion of the short posterior ciliary arteries, causing damage to the optic nerve</li></ul><br><br><span class="concept" data-cid="682">Central retinal vein occlusion</span><br><ul><li>incidence increases with age, more common than arterial occlusion</li><li>causes: glaucoma, polycythaemia, hypertension</li><li>severe retinal haemorrhages are usually seen on fundoscopy</li></ul><br><span class="concept" data-cid="1619">Central retinal artery occlusion</span><br><ul><li>due to thromboembolism (from atherosclerosis) or arteritis (e.g. temporal arteritis)</li><li>features include afferent pupillary defect, 'cherry red' spot on a pale retina</li></ul><br>Vitreous haemorrhage<br><ul><li>causes: <span class="concept" data-cid="4856">diabetes</span>, bleeding disorders, <span class="concept" data-cid="4299">anticoagulants</span></li><li>features may include sudden visual loss, dark spots</li></ul><br>Retinal detachment<br><ul><li>features of vitreous detachment, which may precede retinal detachment, include flashes of light or floaters (see below)</li></ul><br><b>Differentiating posterior vitreous detachment, retinal detachment and vitreous haemorrhage</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Posterior vitreous detachment</b></th><th><b>Retinal detachment</b></th><th><b>Vitreous haemorrhage</b></th></tr></thead><tbody><tr><td> <span class="concept" data-cid="683">Flashes of light (photopsia)</span> - in the peripheral field of vision<br> <span class="concept" data-cid="683">Floaters</span>, often on the temporal side of the central vision</td><td><span class="concept" data-cid="4855">Dense shadow that starts peripherally progresses towards the central vision</span><br> A veil or <span class="concept" data-cid="4298">curtain</span> over the field of vision<br> Straight lines appear curved<br> Central visual loss</td><td>Large bleeds cause sudden visual loss<br> Moderate bleeds may be described as numerous dark spots<br> Small bleeds may cause floaters<br>Often preceeded by flashing lights and floaters<br>Red reflex may be decreased or absent based on the size of bleeding</td></tr></tbody></table></div></div>
---
Posterior vitreous detachment is thought to occur in up to 50-75% of the population over 65 years
---
''Anterior ischaemic neuropathy'' is a sudden painless loss of vision which occurs in individuals with giant cell arteritis, hypertension, smokers and diabetics. The examination finding here of a `pale, swollen optic disc` is typical.
---
* TesticularTorsion
** Common between 10 and 25y
** Worsening of pain on elevating testes
** Emergency exploration and surgical fixation
* EpididymoOrchitis
** Dysuria
** Fever
!!Sudden-onset sensorineural hearing loss
When a patient presents with sudden onset hearing loss it is important to examine them carefully to differentiate between conductive and sensorineural hearing loss → sudden-onset sensorineural hearing loss (SSNHL) requires urgent referral to ENT to rule out rare serious causes such as acoustic neuroma.
The majority of SSNHL cases are idiopathic.
High-dose oral corticosteroids are used by ENT for all cases of SSNHL.
<div id="notecontent">The risk stratification of psychiatric patients into 'high', 'medium' or 'low risk' is common in clinical practice. Questions based on a patient's suicide risk are therefore often seen. However, it should be noted that there is a paucity of evidence addressing the positive predictive value of individual risk factors. An interesting review in the BMJ (BMJ 2017;359:j4627) concluded that 'there is no evidence that these assessments can usefully guide decision making' and noted that 50% of suicides occur in patients deemed 'low risk'.<br><br>Whilst the evidence base is relatively weak, there are a number of factors shown to be associated with an increased risk of suicide<br><ul><li><span class="concept" data-cid="5737">male sex</span> (hazard ratio (HR) approximately 2.0)</li><li><span class="concept" data-cid="4620">history of deliberate self-harm</span> (HR 1.7)</li><li>alcohol or drug misuse (HR 1.6)</li><li>history of mental illness<ul><li>depression</li><li>schizophrenia: <span id="concept_popover_id_10026" class="concept concept-0 trigger-link" data-cid="10026" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10026'>You've never been tested on this concept</div><br><div id='div_concept_rating10026' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(122,255,0)'>Importance: <b>76</b></span> </div>" data-original-title="NICE estimates that 10% of people with schizophrenia will complete suicide">NICE estimates that 10% of people with schizophrenia will complete suicide</span></li></ul></li><li>history of chronic disease</li><li>advancing age</li><li>unemployment or social isolation/living alone</li><li>being unmarried, divorced or widowed</li></ul><br>If a patient has actually attempted suicide, there are a number of factors associated with an increased risk of completed suicide at a future date:<br><ul><li>efforts to avoid discovery</li><li>planning</li><li>leaving a written note</li><li>final acts such as sorting out finances</li><li>violent method</li></ul><br><br><br><b>Protective factors</b><br><br>There are, of course, <span class="concept" data-cid="10027">factors which reduce the risk of a patient committing suicide</span>. These include<br><ul><li>family support</li><li>having children at home</li><li>religious belief</li></ul></div>
!!Sulfonylureas
are oral hypoglycaemic drugs used in the management of type 2 diabetes mellitus. They work by increasing pancreatic insulin secretion and hence are only effective if functional B-cells are present. On a molecular level they bind to an ATP-dependent K+(KATP) channel on the cell membrane of pancreatic beta cells.
Common adverse effects
* hypoglycaemic episodes (more common with long-acting preparations such as chlorpropamide)
* weight gain
Rarer adverse effects
* hyponatraemia secondary to syndrome of inappropriate ADH secretion
* bone marrow suppression
* hepatotoxicity (typically cholestatic)
* peripheral neuropathy
Sulfonylureas should be avoided in breastfeeding and pregnancy.
Sulfonylureas are oral hypoglycaemic drugs used in the management of type 2 diabetes mellitus. They work by increasing pancreatic insulin secretion and hence are only effective if functional B-cells are present. On a molecular level they bind to an ATP-dependent K+(KATP) channel on the cell membrane of pancreatic beta cells.
!!!Common adverse effects
* hypoglycaemic episodes (more common with long-acting preparations such as chlorpropamide)
* weight gain
!!!Rarer adverse effects
* hyponatraemia secondary to syndrome of inappropriate ADH secretion
* bone marrow suppression
* hepatotoxicity (typically cholestatic)
* peripheral neuropathy
Sulfonylureas should be avoided in breastfeeding and pregnancy.
!!!<center>''BASIC SUTURING TECHNIQUES''</center>
<hr>
<iframe width="806" height="453" src="https://www.youtube.com/embed/osgndmRBjsM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="806" height="453" src="https://www.youtube.com/embed/TFwFMav_cpE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
!!!<center>''SUPRAVENTRICULAR TACHYCARDIA''</center>
<hr>
* Differentiate type based on ECG, rhythm strip, & response to adenosine/vagal maneuvers (see below)
* Rhythm arises above the ventricles (either atrium or AV jxn) w/narrow QRS
* H/o pulmonary or cardiac dz → AT, MAT, AFL, AF, NPJT; o/w health adult → AVNRT, AVRT
* Gradual onset → ST, AT; abrupt onset → AVNRT, AVRT
* Evaluation: CBC, TSH, ECG/rhythm strip is sufficient
* Diagnosis by ECG, Vagal Maneuvers, and Adenosine
* Rate ST: Typically <150 bpm
* AFL: Typically 150 bpm (2:1 AV block)
* AVNRT/AVRT: Typically >150 bpm
* Rhythm Irregular → AF, MAT
* P wave UPRIGHT before QRS: ST, AT, MAT
* Retrograde AFTER QRS: AVNRT (w/i QRS), AVRT (after QRS)
* FIBRILLATION or no P wave → AF
* SAWTOOTH appearance → AFL
* Vagal/adenosine Slows rate w/ ↑ AV block: ST, AT, MAT
* Response Terminates rhythm or no response: AVNRT, AVRT; “Unmasks” sawtooth waves ↑ AV block → AFL
* Treatment
* Cardiovert any unstable rhythm
* ST: Treat underlying condition
* AT/MAT: Treat underlying condition; consider AV nodal blocker
* AF/AFL: CCB, βB, dig, amiodarone
* AVNRT/AVRT: Vagal maneuvers, adenosine, CCB preferable to βB → avoid adenosine/nodal agents if e/o pre-excitation
* NPJT: CCB, βB, amiodarone
* Adenosine: Initial: 6mg rapid IV bolus, Redose: 12mg IV bolus if no response from initial bolus within 1-2 min
* Metoprolol Initial: 2.5–5 mg IV bolus q5min × 3, then start maintenance 25–100 mg PO BID
* Diltiazem Start 0.25 mg/kg IV × 1; may repeat 0.25–0.35 mg/kg IV after 15 min, then start maintenance 30 mg PO QID or 5–15 mg/h IV gtt
* Amiodarone Start 150 mg IV over 10 min then maintenance at 0.5–1 mg/min IV
* Disposition
* Most pts w/ ST, AVNRT, AVRT can be d/c home once rhythm is controlled if → asymptomatic & no acute underlying condition.
* Consult cardiology for any pt w/ unstable SVT & those difficult to control w/ standard tx
The symphysis-fundal height (SFH) is measured from the top of the pubic bone to the top of the uterus in centimetres
It should match the gestational age in weeks to within 2 cm after 20 weeks, e.g. if 24 weeks then the a normal SFH = 22 to 26 cm
!!!<center>''SYNCOPE''</center>
<hr>
//Scenario: A patient admitted for palpitations and chest pain loses consciousness while ambulating to the bathroom.//
* Definition: Syncope is transient loss of consciousness with loss of postural tone.
* True syncope must be differentiated from dizziness, “spells,” or near syncope, which are not associated with loss of consciousness and are generally more benign.
* What was the patient’s activity and position immediately before the incident?
* Vasovagal syncope or fainting from orthostatic hypotension requires the patient to have been in the seated or upright position.
* Exertional syncope is frequently cardiac in origin.
* Other key activities (situational syncope) to ask about include turning or twisting the head, coughing, getting up quickly, and micturition.
* Is the patient still unconscious? Vasovagal syncope rarely lasts more than a few seconds and resolves with recumbency.
* Persistent unconsciousness suggests a cardiac or neurologic cause (brain stem stroke or seizure
* What were the vital signs during the episode? What are the vital signs now?
* Vasovagal syncope is associated with bradycardia, but frequently a reflex tachycardia is noted after the episode. The blood pressure is usually normal after a vasovagal faint.
* Orthostatic changes in blood pressure and tachycardia are frequently evidence of volume depletion or blood loss as the cause.
* Neurologic causes are generally associated with a normal or elevated blood pressure.
* Cardiac syncope may occur when arrhythmias result in a pulse < 40 or > 180 bpm.
* Was there evidence of seizure activity? Some clonic jerking of the limbs may occur with syncope, and, in some rare instances, a brief tonic-clonic seizure may occur (convulsive syncope).
* Fecal and urinary incontinence are more typical of seizures than of other causes of syncope.
* How quickly was consciousness regained? Was the patient immediately oriented?
* Cardiac causes and vasovagal episodes are associated with a rapid return to full consciousness.
* Seizures are characterized by postictal confusion and headache.
* How did the patient feel immediately before losing consciousness? Vasovagal episodes are normally preceded by a symptom complex consisting of sweating, lightheadedness, and abdominal queasiness.
* Seizures often have an aura (frequently recurring visual or olfactory sensations).
* Dizziness and vertigo in association with syncope have been associated with increased psychiatric causes of syncope.
* What medical conditions does the patient have?
* Diabetics are at risk for hypoglycemia as well as orthostasis secondary to autonomic dysfunction.
* A history of atherosclerotic vascular disease suggests arrhythmias as well as CVA.
* Ask any H/O seizures, valvular disorders, pacemaker?, migraines, any H/O head trauma.
* Isolated episodes of syncope are more likely to be benign, whereas more frequent episodes are often associated with some underlying disorder.
* Diuretics, antihypertensives, amitriptyline, antiarrhythmics?
* The most common causes of syncope are vasovagal causes, heart disease and arrhythmias, orthostatic hypotension, and seizures.
* The cause of syncope may be placed into one of five categories.
* A. Neural-mediated reflexes associated with vasodilation or bradycardia: Vasovagal syncope, Situational—Micturition syncope, Cough syncope, Valsalva maneuver
* B. Orthostatic hypotension: Age-related physiologic changes, Volume depletion, Dehydration, Blood loss, Medications. Diuretics, antihypertensives, and amitriptyline.
* Autonomic insufficiency: Diabetes, Postprandial orthostasis in the elderly
* C. Psychiatric causes: Anxiety, Depression, Conversion disorder
* D. Neurologic causes: TIA, Migraines, Seizures, Subclavian steal syndrome, Subarachnoid hemorrhage.
* E. Cardiac syncope: Organic heart disease, Acute myocardial infarction with cardiogenic shock, Primary pulmonary hypertension, Idiopathic hypertrophic subaortic stenosis, Pulmonary embolism, Aortic dissection, Cardiac tamponade, Dysrhythmias(Tachycardias, Bradycardias)
* Miscellaneous: Hypoxemia, Hyperventilation, Hypoglycemia.
* Check for orthostatic changes in blood pressure and pulse.
* Look for evidence of trauma, and palpate for bony abnormalities.
* Tongue or cheek lacerations suggest seizure activity.
* Meningitis and subarachnoid hemorrhage have associated neck stiffness.
* Check heart and lungs
* Quick neuro exam
* Get an ECG on all syncope patients.
* Get CBC, KFT, RBS, ECG, ECHO
* 24-hour Holter monitor. Useful if an arrhythmia is suspected, particularly in patients with frequent attacks.
* Admit those pts who have Syncope accompanied by chest pain or shortness of breath, Exertional syncope, Abnormal vital signs, Abnormal findings on cardiac, pulmonary, or neurologic examination, Hematocrit <30 (if obtained), Older age and associated comorbidities
!!!Initial Tests
*FBC, U&E, CRP, glucose, ECG, and CXR
!!DDs
!!! Vasovagal
!!! Postural hypotension
!!! Stokes-Adams-Arrhythmia
* 24h ECG
!!! Aortic stenosis
* ECG
* ''Echo, Cardiac cath''
!!! HOCM
* ''Echo''
!!! Micturition
!!! Cough
!!! Carotid sinus
!!! Hypoglycemia
* ''BG<2''
!!! Epilepsy
* ''EEG''
!!! CVA
* ''CT Head''
!!! PE
* ''CTPA''
* <input type="checkbox"> Check here
* Check here <input type="checkbox">
* <input type="checkbox"> Check here
<hr>
Murmur
<iframe width="560" height="24" src="https://www.youtube.com/embed/pgDWz1JybzE?rel=0&autohide=0" scrolling="no" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<hr>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css">
<h1><i class="fa fa-book-medical"></i>
<i class="fa fa-ambulance"></i>
<i class="fa fa-heartbeat"></i>
<i class="fa fa-brain"></i>
<i class="fa fa-lungs"></i>
<i class="fa fa-microscope"></i>
<i class="fa fa-pills"></i>
<i class="fa fa-prescription"></i>
<i class="fa fa-tablets"></i>
<i class="fa fa-stethoscope"></i>
<i class="fa fa-wheelchair"></i>
<i class="fa fa-vial"></i>
<i class="fa fa-user-md"></i>
<i class="fa fa-mortar-pestle"></i>
<i class="fa fa-prescription-bottle"></i>
<i class="fa fa-radiation"></i>
<i class="fa fa-biohazard"></i>
<i class="fa fa-bone"></i>
<i class="fa fa-hospital"></i></h1>
<div id="body_content">
Syphilis is a sexually transmitted infection caused by the spirochaete <i>Treponema pallidum</i>. Infection is characterised by primary, secondary and tertiary stages. The incubation period is between 9-90 days<br><br>Primary features<br><ul><li><span class="concept" data-cid="2489">chancre</span> - <span class="concept" data-cid="6363">painless ulcer</span> at the site of sexual contact</li><li>local non-tender lymphadenopathy</li><li>often not seen in women (the lesion may be on the cervix)</li></ul><br>Secondary features - occurs 6-10 weeks after primary infection<br><ul><li><span class="concept" data-cid="2490">systemic symptoms: fevers, lymphadenopathy</span></li><li><span class="concept" data-cid="6364">rash on trunk, palms and soles</span></li><li><span class="concept" data-cid="6366">buccal 'snail track' ulcers</span> (30%)</li><li><span class="concept" data-cid="2492">condylomata lata</span> <span class="concept" data-cid="6365">(painless, warty lesions on the genitalia )</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd118b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd118.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd118b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Classical palm lesions of secondary syphilis</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd119b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd119.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd119b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">More generalised rash of secondary syphilis</div><br>Tertiary features<br><ul><li><span class="concept" data-cid="2491">gummas</span> (<span class="concept" data-cid="6367">granulomatous lesions of the skin and bones</span>)</li><li><span class="concept" data-cid="7533">ascending aortic aneurysms</span></li><li>general paralysis of the insane</li><li><span class="concept" data-cid="6368">tabes dorsalis</span></li><li><span class="concept" data-cid="6369">Argyll-Robertson pupil</span></li></ul><br>Features of congenital syphilis<br><ul><li><span class="concept" data-cid="6004">blunted upper incisor teeth (Hutchinson's teeth)</span>, <span class="concept" data-cid="6372">'mulberry' molars</span></li><li>rhagades (<span class="concept" data-cid="6371">linear scars at the angle of the mouth</span>)</li><li>keratitis</li><li>saber shins</li><li><span class="concept" data-cid="6370">saddle nose</span></li><li>deafness</li></ul></div>
---
>Solitary Painless Shankar becomes Rash with Condylu
---
>drive CARS with HANDS
DDs of Rash on Palms (CoxA-Rickettsia-Syphilis)
---
>Gummy Aortu, Charred Table Dosa for Pupils
---
>SaberShin - SaddleNose - MulberryMolar - HutchiTeeth - CrN VIII - Cleft Palate - Rhinitis - Desquamating Rash on Hands/Feet
<div id="body_content">
Syringomyelia (‘syrinx’ for short) describes a collection of cerebrospinal fluid within the spinal cord. <br><br>Syringobulbia is a similar phenomenon in which there is a fluid-filled cavity within the medulla of the brainstem. This is often an extension of the syringomyelia but in rare cases can be an isolated finding. <br><br>Causes include:<br><ul><li>a Chiari malformation: strong association</li><li>trauma</li><li>tumours</li><li>idiopathic</li></ul><br>The classical presentation of a syrinx is a patient who has a ‘cape-like’ (neck and arms) loss of sensation to temperature but preservation of light touch, proprioception and vibration. Classic examples are of patients who accidentally burn their hands without realising. This is due to the crossing spinothalamic tracts in the anterior commissure of the spinal cord being the first tracts to be affected. Other symptoms and signs include spastic weakness (predominantly of the upper limbs), paraesthesia, neuropathic pain, upgoing plantars and bowel and bladder dysfunction. Scoliosis will occur over a matter of years if the syrinx is not treated. It may cause a Horner’s syndrome due to compression of the sympathetic chain, but this is rare.<br><br>Investigation requires a full spine MRI with contrast to exclude a tumour or tethered cord. A brain MRI is also needed to exclude a Chiari malformation.<br><br>Treatment will be directed at treating the cause of the syrinx. In patients with a persistent or symptomatic syrinx, a shunt into the syrinx can be placed.</div>
NOTE: see commented out content
<!--
Access
geekmedic
67127ba8d58cf26c088750352f82f4776eb9e7c1
geekmedic/notes
/
main
index.html
https://api.github.com
---
To embed images from dropbox<br>
<center><img src="https://www.dropbox.com/s/0awbeye4wojd305/pneumonia2.jpg?raw=1" width="400"></center>
<center>
[img width=400 [https://www.dropbox.com/s/0awbeye4wojd305/pneumonia2.jpg?raw=1]]
</center>
---
Default tabs for sidebar(I modified it):
<<tabs "$:/core/ui/SideBar/Open $:/core/ui/SideBar/Recent $:/core/ui/SideBar/Tools $:/core/ui/SideBar/More">>
<hr>
Sidebar contents are locate in '$:/core/ui/SideBarSegments/page-controls'
'$:/core/ui/ViewTemplate/title'
Removed $:/tags/SideBarSegment from Deleted Sidebar contents
To remove top right '>>' slide option, remove tag '$:/tags/TopRightBar' from '$:/core/ui/TopBar/menu'
Simple search box: {{simple_search}}
create a new tag
add a tiddler with new tag
use code
<div class="td-table-of-contents">
<<toc-selective-expandable 'Title' sort[idx]>>
</div>
to get the tiddler list with the tag
update [[Table of Contents]]
update [[Tagpils]] with the tag
To see TOC on the side bar,
tag [[Table of Contents]] with $:/tags/SideBarSegment
Removed tag $:/tags/ViewTemplate from Tagpils
Removed tag $:/tags/ViewTemplate from closeme
Removed tat $:/tags/SideBarSegment from
$:/core/ui/SideBarSegments/search
Close X button
<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>
{{$:/core/images/close-button}}
</$button>
To see the title name on the top of the content in each tiddler, I added
!!!<hr><center>''{{!!title}}''</center><hr> to the viewtemplate body $:/core/ui/ViewTemplate/body
To embed images from dropbox
<center><img src="https://www.dropbox.com/s/0awbeye4wojd305/pneumonia2.jpg?raw=1" width="400"></center>
-->
<div id="body_content">
Systemic sclerosis is a condition of unknown aetiology characterised by hardened, sclerotic skin and other connective tissues. It is four times more common in females.<br><br>There are three patterns of disease:<br><br>Limited cutaneous systemic sclerosis<br><ul><li>Raynaud's may be first sign</li><li>scleroderma affects face and <span class="concept" data-cid="2653">distal limbs</span> predominately</li><li>associated with <span class="concept" data-cid="620">anti-centromere antibodies</span></li><li>a subtype of limited systemic sclerosis is CREST syndrome: Calcinosis, Raynaud's phenomenon, oEsophageal dysmotility, Sclerodactyly, Telangiectasia</li></ul><br>Diffuse cutaneous systemic sclerosis<br><ul><li>scleroderma affects trunk and proximal limbs predominately</li><li>associated with scl-70 antibodies</li><li>the most common cause of death is now respiratory involvement, which is seen in around 80%: <span class="concept" data-cid="9152">interstitial lung disease (ILD) and pulmonary arterial hypertension (PAH)</span></li><li>other complications include renal disease and hypertension</li><li>poor prognosis</li></ul><br>Scleroderma (without internal organ involvement)<br><ul><li>tightening and fibrosis of skin</li><li>may be manifest as plaques (morphoea) or linear</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd087b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd087.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd087b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd088b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd088.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd088b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd089b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd089.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd089b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Antibodies<br><ul><li>ANA positive in 90%</li><li>RF positive in 30%</li><li>anti-scl-70 antibodies associated with diffuse cutaneous systemic sclerosis</li><li>anti-centromere antibodies associated with limited cutaneous systemic sclerosis</li></ul></div>
<<tabs "Contents Protocols Drugs GP [[Critical Care]] Misc Review $:/core/ui/MoreSideBar/Recent" "Contents">>
!!!<center>''TACHYCARDIA''</center>
<hr>
//You are asked to evaluate an 18-year-old woman with sudden onset of chest pain, palpitations, and dizziness. Cardiac monitoring reveals a rapid, regular, narrow-complex tachycardia at a rate of 180 beats per minute (bpm)//
* Immediate Questions
* What are the patient’s other vital signs? Hypotension accompanying a tachyarrhythmia demands immediate action.
* Tachypnea and tachycardia may be present with acute pulmonary embolism (PE); a severe pneumonia; exacerbation of (COPD); and acute pulmonary edema.
* Tachycardia accompanied by a fever may suggest an infection or thyrotoxicosis.
* What has been the patient’s heart rate previously? A sudden change in heart rate may signify a change in cardiac rhythm, such as the sudden onset of atrial fibrillation.
* Does the patient have any symptoms related to the tachycardia? Ask about dyspnea, chest pain, dizziness, syncope, agitation, and confusion.
* What medication is the patient currently taking? Drugs that can cause tachyarrhythmias include diuretics, Deriphylline, catecholamine infusions
* Diuretics can lead to intravascular volume loss as well as hypokalemia and hypomagnesemia that can result in tachyarrhythmias.
* Sinus tachycardia. This condition is defined as a sinus node controlled rhythm > 100 bpm.
* ''Causes'': varying states of emotion and pain; fever; anemia; hypoxemia; hemorrhage; infection; thyrotoxicosis; myocardial infarction; pneumothorax; pericarditis;
* Sinus tachycardia is typically gradual in onset and termination. Vagal maneuvers and carotid sinus massage may slow the heart rate temporarily, but the tachycardia returns when these maneuvers are stopped.
* Sinus tachycardia rarely occurs in quiet patients at rates greater than 140 bpm. Fever can be expected to raise the sinus rate about 10 bpm for every degree above normal core body temperature.
''Supraventricular tachyarrhythmias (SVT)''
# Atrial flutter.
# Atrial fibrillation.
# Automatic AVTs.
# Reentrant SVT.
''Ventricular arrhythmias''
# Accelerated idioventricular rhythm (AIVR).
# Ventricular tachycardia (VT).
# Ventricular fibrillation (VF).
# Torsades de pointes.
<hr>
<center>''Management''</center>
<hr>
* Check K and Mg, ABG, CBC, TSH, ECG and rhythm strip.
* Correction of serum electrolyte imbalances is essential.
* Synchronized electrical cardioversion. If a tachyarrhythmia is responsible for causing an acute unstable episode of congestive heart failure, acute myocardial ischemia, or hemodynamic collapse, the quickest and most appropriate therapy for the termination of the tachyarrhythmia is synchronized electrical cardioversion.
* If the patient remains conscious during the tachycardia, it is appropriate to administer an intravenous sedative such as midazolam (Versed) before electrical cardioversion.
* Ventricular fibrillation may result if the electrical shock is not synchronized to the R wave in cases of SVT and VT.
* Most SVTs can be terminated using 50–100 joules, and most ventricular tachyarrhythmias respond to 100–200 joules.
* ''Carotid sinus massage''
* ''Adenosine for SVT''
* ''Amiodarone (Cordarone)''. Indicated for ventricular tachycardia, cardiac arrest (pulseless ventricular tachycardia or ventricular fibrillation), paroxysmal SVT, atrial fibrillation, atrial flutter, and junctional tachycardia.
** The dose for arrhythmias other than cardiac arrest is 150 mg IV over 10 minutes, followed by 1 mg/min IV over 6 hours, then 0.5 mg/min. For cardiac arrest, the dose is 300 mg IV push; may follow with a second dose of 150 mg. Follow the initial bolus(es) with a continuous infusion as above. The maximum dose is 2.2 g over 24 hours. Dilute the bolus in 20–30 mL normal saline or 5% dextrose in water.
* ''Beta-blockers'' (propranolol, metoprolol, esmolol). Beta-blockers are helpful in controlling a rapid heart rate with sinus tachycardia, atrial flutter and fibrillation, automatic atrial tachycardia,
** Beta-blockers should be used with caution in impaired left ventricular function or COPD.
** Metoprolol (Lopressor) 5–15 mg is given in divided doses (administered in doses of 5 mg given at about 2-minute intervals).
* ''Digoxin'': An initial dose of 0.25–0.50 mg is given IV followed by additional doses of 0.25 mg every 4–6 hours (carefully assess clinical response and signs of toxicity before each additional dose), for a total loading dose of 1.0 mg. Daily maintenance doses of 0.125–0.25 mg are required
* ''Diltiazem'': for the acute management of new-onset atrial fibrillation or flutter, and the treatment of acute episodes of paroxysmal SVT.
* The initial dose is 0.25 mg/kg IV administered over 2 minutes (maximum dose 20 mg), to be repeated 0.35 mg/kg in 15 minutes if needed. The patient can then be maintained on an IV infusion of 10 mg/hr, or started on oral maintenance doses of 60–90 mg given Q 6 hr. The dose can be changed to a long-acting preparation after 24 hours. Precautions are similar to those for verapamil.
* ''Magnesium''. Indicated for polymorphic ventricular tachycardia (torsades de pointes) and suspected hypomagnesemia. The dose is 1–2 g IV over 15 minutes (for hypomagnesemia) and 2 g IV over 1–2 minutes followed by 0.5–1.0 g/hr (for torsades de pointes). Dilute the bolus in 50–100 mL of 5% dextrose in water.
<<tag "Protocols">><<tag "Drugs">><<tag "GP">><<tag "Misc">><<tag "UpToDate">>
<div id="body_content">
Takayasu's arteritis is a large vessel vasculitis. It typically causes occlusion of the aorta and questions commonly refer to an absent limb pulse. It is more common in females and Asian people<br><br>Features<br><ul><li>systemic features of a vasculitis e.g. malaise, headache</li><li>unequal blood pressure in the upper limbs</li><li>carotid bruit</li><li>intermittent claudication</li><li>aortic regurgitation (around 20%)</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd107b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd107.jpg"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd107b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Angiography showing multiple stenoses in the branches of the aorta secondary to Takayasu's arteritis</div><br>Associations<br><ul><li>renal artery stenosis</li></ul><br>Management<br><ul><li>steroids</li></ul></div>
<div id="body_content">
Tamoxifen is a <span class="concept" data-cid="8854">Selective oEstrogen Receptor Modulator (SERM)</span> which acts as an oestrogen receptor antagonist and partial agonist. It is used in the management of oestrogen receptor positive breast cancer<br><br>Adverse effects<br><ul><li>menstrual disturbance: vaginal bleeding, amenorrhoea</li><li>hot <span class="concept" data-cid="8855">flushes</span> - 3% of patients stop taking tamoxifen due to climacteric side-effects</li><li><span class="concept" data-cid="2847">venous thromboembolism</span></li><li><span class="concept" data-cid="8856">endometrial cancer</span></li><li>osteoporosis</li></ul><br>Tamoxifen is typically used for 5 years following removal of the tumour.<br><br>Raloxifene is a pure oestrogen receptor antagonist, and carries a lower risk of endometrial cancer</div>
!!Tuberculosis (TB)
is an infection caused by Mycobacterium tuberculosis that most commonly affects the lungs. Understanding the pathophysiology of TB can be difficult - the key is to differentiate between primary and secondary disease.
;Primary tuberculosis
A non-immune host who is exposed to M. tuberculosis may develop primary infection of the lungs. A small lung lesion known as a Ghon focus develops. The Ghon focus is composed of tubercle-laden macrophages. The combination of a Ghon focus and hilar lymph nodes is known as a Ghon complex
In immunocompotent people the intially lesion usually heals by fibrosis. Those who are immunocompromised may develop disseminated disease (miliary tuberculosis).
;Secondary (post-primary) tuberculosis
If the host becomes immunocompromised the initial infection may become reactivated. Reactivation generally occurs in the apex of the lungs and may spread locally or to more distant sites. Possible causes of immunocomprise include:
* immunosuppressive drugs including steroids
* HIV
* malnutrition
The lungs remain the most common site for secondary tuberculosis. Extra-pulmonary infection may occur in the following areas:
* central nervous system (tuberculous meningitis - the most serious complication)
* vertebral bodies (Pott's disease)
* cervical lymph nodes (scrofuloderma)
* renal
* gastrointestinal tract
<center>
<img width=400 src="https://www.dropbox.com/s/0b1xjv80bjpg9ml/tb1.jpg?raw=1">
</center>
<center>
<img width=400 src="https://www.dropbox.com/s/8dvo9p97801aoka/tb2.jpg?raw=1">
</center>
---
!!!<center>''TUBERCULOSIS''</center>
<hr>
* First-line: Isoniazid(H), Rifampicin(R), Ethambutol(E), Pyrazinamide(Z)
* New: HRZE(2)+HRE(4); Previously treated: HRZES(2)+HRZE(1)+HRE(5); Additional 3-6m for TBM, Bone TB, Disseminated TB;
* New WHO guideline: MDR TB: 4-6 Km-Mfx-Pto-Cfz-Z-Hhigh-dose-E / 5 Mfx-Cfz-Z-E Km=Kanamycin; Mfx=Moxifloxacin; Pto=Prothionamide; Cfz=Clofazimine; Z=Pyrazinamide; Hhigh-dose= high-dose Isoniazid; E=Ethambutol
* Adults: Akurit/Trac-4 (HRZE 75/150/400/275)(2m); Akurit/Trac-3 (HRE 75/150/275)(4m); inj Strepto(2m);
* Wt 25-39 kg: 2+2+0.5; 40-54 kg: 3+3+0.75; 55-69 kg: 4+4+1; >=70 kg: 5+5+1
* Peds: Akurit-Z Kid(HRZ 30/60/150)(2m),Combutol 200(2m), Inj Strep(mg)(2m), Akurit kid (HR30/60) (4m), Combutol 200(4m)
* 4-7 kg: 1+ ½ +100; 8-11 kg: 2+1+150; 12-15 kg: 3+1 ½ +200; 16-24 kg: 4+2+300;
* Drugs for rifampicin-resistant and MDR TB:
* A. Fluoroquinolones: Levofloxacin(Lfx), Moxifloxacin(Mfx), Gatifloxacin(Gfx)
* B. Sec-line inj agents: Amikacin(Am), Capreomycin(Cm), Kanamycin(Km), Streptomycin(S)
* C. Other core second-line agents: Ethionamide / Prothionamide(Eto / Pto), Cycloserine / Terizidone(Cs / Trd), Linezolid(Lzd), Clofazimine(Cfz)
* D. Add-on agents (not part of the core MDR-TB regimen)
* D1: Pyrazinamide(Z), Ethambutol(E), High-dose isoniazid(Hh)
* D2: Bedaquiline(Bdq), Delamanid(Dlm)
* D3: p-aminosalicylic acid, Imipenem-cilastatin, Meropenem, Amoxicillin-clavulanate, (Thioacetazone)
* Rx: Intensive phase for 8m: 5 drugs including pyrazinamide and four core second-line TB medicines - one chosen from group A, one from group B, and at least two from group C. If the minimum of effective TB medicines cannot be composed as above, an agent from group D2 and other agents from D3 may be added to bring the total to 5. Regimen can be further strengthened with high-dose isoniazid and/or ethambutol
* Continuation phase for 12m inc Quinolone, Ethinamide, Cycloserine, Pyrazinamide.
* Eg: 8Km-Lfx-Eto-Cs-Z/12Lfx-Eto-Cs-Z
* Tests: Sputum AFB, Ht, Wt, CBC,FBS,LFT,KFT,TSH,Preg test,CXR,ECG,HIV;
* If Sputum +ve then repeat after 2m. If still +ve then DST; then start MDR regimen
* Pregnant: all meds except Strepto. Lactating Mother: full course, cont BF, 6m INH to baby, B6 5mg/d.
* With Liver ds: ALT-3X elevated: 2 Hep toxic drugs: [HRE-9m] or [HRES-2m+HR-7m] or [HRZ-6-9m]; 1 Hep toxic drug: [HES-2m+HE-10m]; No Hep toxic drug: [ES, Floroquin 18-24m]. Pyrazinamide, PAS, Ehionamide potentionally hepatotoxic.;
* Renal impairment: Standard Rx, HR-same dose, Z(25-35mg/kg 3times/wk), E(15-25 mg/kg 3 times/wk), Strepto(12-15 mg/kg 3 times/wk);
* Latent TB: INH(10mg/kg-6m); Pl eff: Protein>3g/dl and ADA>60 IU/L; Abdominal TB: Ascitic fluid: SAAG <1.1 + protein>2.5 g/mL, ADA >39 IU/mL in ascitic fluid;
* 4 wks steroids with taper in TBM &Pericarditis.
* Xpert MTB/RIF test for TB lymph node & TBM;
* TB L node, Adb-6m, TBM-9m, TB spine 12-18m (2+10)
* Cough, SOB: Asthalin inhalers, Wysolone 10-20 mg/d 7 ds.
* H-5, R-10, Z-25, E-15, S-15
* BCG Adenitis>1.5 cm: 6H if <2-3 yrs and in <6yrs with malnutrition.
* INH 10mg/kg for 6m in all children <6 yrs who are in contact with sputum +ve but no clinical symptoms and Normal X ray. If HIV +ve age limit is 12 yrs
* Children: Lymph node TB: 2HRZ+4HR; CNS TB: 2 HRZE+10HRE+Prednisone 8 wks; TB in pregnancy: 9HRE; In hepatic dysfunction: Stop HRZ, start Strepto & E, check enzymes if coming down start Rifam at 5 mg/kg then inc to 10, after 1 wk start INH, after 1 wk start Z
* Asymptomatic newborn of mother with active TB: INH 10 mg/kg for 6m
* Symptomatic newborn with TB: 2HRZ+7HR
!!Tuberculosis: drug side-effects and mechanism of action
;Rifampicin
* mechanism of action: inhibits bacterial DNA dependent RNA polymerase preventing transcription of DNA into mRNA
* potent liver enzyme inducer
* hepatitis, orange secretions
* flu-like symptoms
;Isoniazid
* mechanism of action: inhibits mycolic acid synthesis
* peripheral neuropathy: prevent with pyridoxine (Vitamin B6)
* hepatitis, agranulocytosis
* liver enzyme inhibitor
;Pyrazinamide
* mechanism of action: converted by pyrazinamidase into pyrazinoic acid which in turn inhibits fatty acid synthase (FAS) I
* hyperuricaemia causing gout
* arthralgia, myalgia
* hepatitis
;Ethambutol
* mechanism of action: inhibits the enzyme arabinosyl transferase which polymerizes arabinose into arabinan
* optic neuritis: check visual acuity before and during treatment
* dose needs adjusting in patients with renal impairment
---
>RIFEmpicin
* Ripe Orange Urine - potent inducer of CytP450
---
>ICE like sensation - PYRE for ICE
* Peripheral neuritis - PYRIdoxine supplementation - Hepatitis
---
>pyraZINamide
* Alcohol like HyperUricemia - Hepatitis
---
>Ethereal Colors
* OpticNeuritis
<div id="body_content">
Tricyclic antidepressants (TCAs) are used less commonly now for depression due to their side-effects and <span class="concept" data-cid="4802">toxicity in overdose</span>. They are however used widely in the treatment of neuropathic pain, where smaller doses are typically required.<br><br>Common side-effects<br><ul><li><span class="concept" data-cid="8150">drowsiness</span></li><li><span class="concept" data-cid="8151">dry mouth</span></li><li><span class="concept" data-cid="8152">blurred vision</span></li><li><span class="concept" data-cid="8153">constipation</span></li><li><span class="concept" data-cid="8154">urinary retention</span></li><li><span class="concept" data-cid="8155">lengthening of QT interval</span></li></ul><br>Choice of tricyclic<br><ul><li>low-dose amitriptyline is commonly used in the management of neuropathic pain and the prophylaxis of headache (both tension and migraine)</li><li><span class="concept" data-cid="469">lofepramine has a lower incidence of toxicity in overdose</span></li><li>amitriptyline and <span class="concept" data-cid="468">dosulepin</span> (dothiepin) are considered the most dangerous in overdose</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>More sedative</b></th><th><b>Less sedative</b></th></tr></thead><tbody><tr><td>Amitriptyline<br>Clomipramine<br>Dosulepin<br>Trazodone*</td><td>Imipramine<br>Lofepramine<br>Nortriptyline</td></tr></tbody></table></div><br>*trazodone is technically a 'tricyclic-related antidepressant'</div>
---
>CCC - CNS - Cardio - antiCOOL
<div id="body_content">
Ataxia telangiectasia is an autosomal recessive disorder caused by a defect in the ATM gene which encodes for <span class="concept" data-cid="5930">DNA repair enzymes</span>. It is one of the inherited <span class="concept" data-cid="5921">combined immunodeficiency disorders</span>. It typically presents in early childhood with abnormal movements.<br><br>Features<br><ul><li><span class="concept" data-cid="5944">cerebellar ataxia</span></li><li><span class="concept" data-cid="5945">telangiectasia (spider angiomas)</span></li><li>IgA deficiency resulting in recurrent chest infections</li><li>10% risk of developing malignancy, lymphoma or leukaemia, but also non-lymphoid tumours</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd912b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd912.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd912b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of Friedreich's ataxia and ataxia telangiectasia. Note in particular how ataxia telangiectasia tends to present much earlier, often at the age of 1-2 years</div></div>
<div id="body_content">
Tetracyclines are a class of antibiotics which are commonly used in clinical practice.<br><br>Examples<br><ul><li>doxycycline</li><li>tetracycline</li></ul><br>Mechanism of action<br><ul><li>protein synthesis inhibitors</li><li>binds to 30S subunit blocking binding of aminoacyl-tRNA </li></ul><br>Mechanism of resistance<br><ul><li>increased efflux of the bacteria by plasmid-encoded transport pumps, ribosomal protection</li></ul><br>Indications<br><ul><li>acne vulgaris</li><li>Lyme disease</li><li><i>Chlamydia</i></li><li><i>Mycoplasma pneumoniae</i></li></ul><br>Notable adverse effects<br><ul><li><span class="concept" data-cid="8416">discolouration of teeth</span>: therefore should <span class="concept" data-cid="7890">not be used in children < 12 years of age</span></li><li><span class="concept" data-cid="2336">photosensitivity</span></li><li><span class="concept" data-cid="7891">angioedema</span></li><li><span class="concept" data-cid="5343">black hairy tongue</span></li></ul><br>Tetracyclines should not be given to women who are pregnant or <span class="concept" data-cid="6069">breastfeeding</span> due to the risk of discolouration of the infant's teeth.</div>
---
>Tetra Colors on Face - Photosensitivity - Discolored teeth -Swollen Lips(Angioedema) - Black hairy tongue
*Intracranial htn could also be caused by Tetracycline
---
Thiamine is a water soluble vitamin of the B complex group. One of it's phosphate derivates, thiamine pyrophosphate (TPP), is a coenzyme in the following enzymatic reactions:
* pyruvate dehydrogenase complex
* pyruvate decarboxylase in ethanol fermentation
* alpha-ketoglutarate dehydrogenase complex
* branched-chain amino acid dehydrogenase complex
* 2-hydroxyphytanoyl-CoA lyase
* transketolase
Thiamine is therefore important in the catabolism of sugars and aminoacids. The clinical consequences of thiamine deficiency are therefore seen first in highly aerobic tissues such as the brain (Wernicke-Korsakoff syndrome) and the heart (wet beriberi).
Causes of thiamine deficiency:
* alcohol excess. Thiamine supplements are the only routinely recommend supplement in patients with alcoholism
* malnutrition
Conditions associated with thiamine deficiency:
* Wernicke's encephalopathy: nystagmus, ophthalmoplegia and ataxia
* Korsakoff's syndrome: amnesia, confabulation
* dry beriberi: peripheral neuropathy
* wet beriberi: dilated cardiomyopathy
---
>WERNICKE WADDLING DUCK with CONFUSED WANDERING EYES
*WerNicke's - Ataxia - Confusion - Nystagmus - Ophthalmoplegia
---
>KORSAKOFF CONFABULATION
*Korsakoff's - Amnesia - Confabulations
---
!!Thiazide diuretics
work by inhibiting sodium reabsorption at the beginning of the distal convoluted tubule (DCT) by blocking the thiazide-sensitive Na+-Cl− symporter. Potassium is lost as a result of more sodium reaching the collecting ducts. Thiazide diuretics have a role in the treatment of mild heart failure although loop diuretics are better for reducing overload. The main use of bendroflumethiazide was in the management of hypertension but recent NICE guidelines now recommend other thiazide-like diuretics such as indapamide and chlortalidone.
Common adverse effects
* dehydration
* postural hypotension
* hyponatraemia, hypokalaemia, hypercalcaemia*
* gout
* impaired glucose tolerance
* impotence
Rare adverse effects
* thrombocytopaenia
* agranulocytosis
* photosensitivity rash
* pancreatitis
<center>
<img width=400 src="https://www.dropbox.com/s/xyq16ofzmzkwdlw/HTN%20Mx2.png?raw=1">
</center>
Flow chart showing the management of hypertension as per current NICE guideliness
*the flip side of this is hypocalciuria, which may be useful in reducing the incidence of renal stones
---
>Thiazide hyperGLUC
*HyperGlycemia - HyperLipidemia(Pancreatitis) - HyperUricemia(Gout) - HyperCalcemia
---
!!Thiazolidinediones
Thiazolidinediones are a class of agents used in the treatment of type 2 diabetes mellitus. They are agonists to the PPAR-gamma receptor and reduce peripheral insulin resistance. Rosiglitazone was withdrawn in 2010 following concerns about the cardiovascular side-effect profile.
The PPAR-gamma receptor is an intracellular nuclear receptor. It's natural ligands are free fatty acids and it is thought to control adipocyte differentiation and function.
Adverse effects
* weight gain
* liver impairment: monitor LFTs
* fluid retention - therefore contraindicated in heart failure. The risk of fluid retention is increased if the patient also takes insulin
* recent studies have indicated an increased risk of fractures
* bladder cancer: recent studies have shown an increased risk of bladder cancer in patients taking pioglitazone (hazard ratio 2.64)
---
>PPAR GAMMA causes CANCER
*PPAR Gamma agonist - Bladder Cancer
---
>GLIPT x GLIT
*Gliptin increase Insulin, cause Wt Loss - Glitazone decrease resistance, cause Wt Gain
---
<div id="notecontent">Features<br><ul><li><span class="concept" data-cid="6009">eye is deviated 'down and out'</span></li><li>ptosis</li><li>pupil may be dilated (sometimes called a 'surgical' third nerve palsy)</li></ul><br>Causes<br><ul><li>diabetes mellitus</li><li>vasculitis e.g. temporal arteritis, SLE</li><li><span class="concept" data-cid="1440">false localizing sign* due to uncal herniation through tentorium if raised ICP</span></li><li><span class="concept" data-cid="10206">posterior communicating artery aneurysm</span><ul><li>pupil dilated</li><li>often associated <span class="concept" data-cid="518">pain</span></li></ul></li><li>cavernous sinus thrombosis</li><li>Weber's syndrome: ipsilateral third nerve palsy with contralateral hemiplegia -caused by midbrain strokes</li><li>other possible causes: amyloid, multiple sclerosis</li></ul><br>*this term is usually associated with sixth nerve palsies but it may be used for a variety of neurological presentations</div>
!!!<center>''THORACENTESIS''</center>
<center>''Overview''</center>
<iframe width="806" height="453" src="https://www.youtube.com/embed/z0dCL4CHGSk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<center>''Procedure''</center>
<center><iframe width="645" height="484" src="https://www.youtube.com/embed/ivTyH09BcHg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
!!Thought disorders
''Circumstantiality'' is the inability to answer a question without giving excessive, unnecessary detail. However, this differs from tangentiality in that the person does eventually return the original point.
''Tangentiality'' refers to wandering from a topic without returning to it.
''Neoligisms'' are new word formations, which might include the combining of two words.
''Clang associations'' are when ideas are related to each other only by the fact they sound similar or rhyme.
''Word salad'' is completely incoherent speech where real words are strung together into nonsense sentences.
''Knight's move'' thinking is a severe type of loosening of associations, where there are unexpected and illogical leaps from one idea to another. It is a feature of schizophrenia.
''Flight of ideas'', a feature of mania, is thought disorder where there are leaps from one topic to another but with discernible links between them.
''Perseveration'' is the repetition of ideas or words despite an attempt to change the topic.
''Echolalia'' is the repetition of someone else's speech, including the question that was asked.
---
tangentiality (3), which refers to wandering from a topic without returning to it. It can also be defined as ‘thought and speech associated with excessive and unnecessary detail that is usually relevant to the question, but the person never returns to the central point and never answers the original question’, i.e. goes off on a tangent. In the example, the patient briefly makes reference to taking the knife, but does not explain why, rather begins talking off on a tangent about what happened at the bank. It also displays the inclusion of irrelevant details (i.e. the holiday destination) which the doctor did not ask for.
Circumstantiality (1) is similar, but in this case an answer is ultimately given rather than going off on a tangent.
Clang associations (2) are a group of words similar in sound but not in meaning, and these words will have no logical connection. It may include rhyming and punning. An example would be ‘You are very cute. A cute mute, in a suit, eating fruit’.
Perseveration (4) is the persisting response to a previous stimulus (i.e. question) after a new stimulus [question] has been presented. An example would be:
‘How are you today?’ ‘I am sick.’
‘Have any of your family visited you?’ ‘I am sick.’
Word salad (5) is where speech is reduced to a senseless repetition of sounds and phrases, e.g. ‘In worlds with pencils, you may page drink slime’.
`Household contacts of patients with threadworms should be treated even if they have no symptoms`
<div id="notecontent">Infestation with threadworms (<i>Enterobius vermicularis</i>, sometimes called pinworms) is extremely common amongst children in the UK. Infestation occurs after swallowing eggs that are present in the environment.<br><br>Threadworm infestation is asymptomatic in around 90% of cases, possible features include:<br><ul><li>perianal itching, particularly at night</li><li>girls may have vulval symptoms</li></ul><br>Diagnosis may be made by the <span class="concept" data-cid="10465">applying Sellotape to the perianal area</span> and sending it to the laboratory for microscopy to see the eggs. However, most patients are treated empirically and this approach is supported in the CKS guidelines.<br><br>Management<br><ul><li>CKS recommend a combination of anthelmintic with hygiene measures for <span id="concept_popover_id_10464" class="concept concept-1 trigger-link" data-cid="10464" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10464'>You've been tested on this concept once, 1 second ago, and got the associated question incorrect.</div><br><div id='div_concept_rating10464' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(45,255,0)'>Importance: <b>91</b></span> </div>" data-original-title="Household contacts of patients with threadworms should be treated even if they have no symptoms">all members of the household</span></li><li><span id="concept_popover_id_4663" class="concept concept-0 trigger-link" data-cid="4663" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4663'>You've never been tested on this concept</div><br><div id='div_concept_rating4663' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(20,255,0)'>Importance: <b>96</b></span> </div>" data-original-title="Mebendazole is first line therapy for treatment of threadworm">mebendazole</span> is used first-line for children > 6 months old. A single dose is given unless infestation persists</li></ul></div>
!!!<center>''THROMBOCYTOPENIA''</center>
<hr>
//You are called to see a 73-year-old patient admitted to the cardiology service with unstable angina. His admission laboratory data reveal a platelet count of 32,000/μL.//
* Immediate Questions
* Is the patient bleeding? The risk of bleeding from trauma increases with a platelet count < 50,000/μL; the risk of spontaneous bleeding increases with a platelet count < 20,000/μL.
* Is the count real? Could the results be due to laboratory error (clotted specimen or wrong patient)? Recheck the lab. Rule out the phenomenon of platelet clumping. Review the peripheral smear if available.
* Is there an obvious cause of thrombocytopenia?
* Recent chemotherapy or radiation can result in decreased production of platelets.
* Also, an enlarged spleen can result in sequestration of platelets.
* Does the patient have a history of low platelet count? Does this appear to be an acute problem such as idiopathic thrombocytopenic purpura (ITP); or is there an underlying disorder contributing to the low platelet count, such as cirrhosis with hypersplenism, chronic ITP, or perhaps an inherited disorder such as Fanconi’s syndrome or Wiskott-Aldrich syndrome?
* Is the patient on any medicines that might cause thrombocytopenia? Drug-induced thrombocytopenia is one of the most common causes.
* Many drugs can cause thrombocytopenia.
* Ethanol, antibiotics, sulfonamides, heparin, thiazide diuretics
* Is there a history of a recent viral infection? A viral infection days to weeks before the onset of thrombocytopenia suggests a chronic form of ITP or acute interference with normal megakaryocyte maturation.
* Quantitative platelet disorders are usually divided into two categories: decreased production and peripheral destruction or sequestration.
''Decreased production''
# Infiltrative processes. Leukemias (acute or chronic), carcinoma. Infection (granulomatous disease) such as tuberculosis can cause a similar picture.
# Myelodysplasia (preleukemic syndrome).
# Drugs.
# Radiation.
# Nutrition. Malnutritional states, such as vitamin B12 and folate deficiency, and occasionally iron deficiency, can lead to depressed numbers of megakaryocytes.
# Virus infection. Viral illnesses such as hepatitis B, rubella, and infectious mononucleosis etc
# Paroxysmal nocturnal hemoglobinuria. This can be associated with insufficient platelet production. Episodic red-brown urine occurs most often with the first morning urine.
''Peripheral destruction''
* ''ITP''. This is an autoimmune disorder and a frequent cause of thrombocytopenia. ITP is a diagnosis of exclusion made by history, physicial exam, and review of blood work.
* SLE, HIV
* ''Infection'': DIC?.
* Snake bite?
* Glomerulonephritis, Aortic valvular stenosis.
* Thrombotic thrombocytopenic purpura
* Heparin?
* ''Sequestration''. When the spleen is enlarged and hypersplenism ensues, up to 90% of circulating platelets may be pooled within the spleen.
* Hypersplenism is often seen in patients with chronic liver disease with associated portal hypertension. Typically, platelet counts range between 50,000 and 100,000.
* ''Pregnancy-related thrombocytopenia''. Gestational thrombocytopenia is usually mild and can be seen in about 5% of pregnant women.
* The cause is unknown and resolves after delivery. Thrombocytopenia may occur at delivery or shortly after delivery and may be related to pre-eclampsia; HELLP syndrome (hemolysis, increased liver enzymes and low platelets); or DIC, which may occur secondary to placental abnormalities.
''History key points''
* Is there a history of abnormal blood work or hematologic disease?
* Take a thorough medication history including medications started since admission, recent antibiotics, and any medication changes within the last month.
* Inquire about nutritional status and alcohol history.
* Also, determine whether there is any family history of bleeding or thrombocytopenia.
* Look for evidence of bleeding and peripheral sequestration.
* Fever: Infection? TTP?
* petechiae or purpura? Splenomegaly?
* Chronic alcoholics may have evidence of portal hypertension such as dilated abdominal and chest wall veins, ascites, and splenomegaly.
* Splenomegaly is also seen with lymphoproliferative and myeloproliferative disorders, as well as infectious causes (eg, infectious mononucleosis and endocarditis).
* The presence of palpable splenomegaly makes ITP much less likely.
* Fluctuating neurologic findings are frequently seen in TTP.
* Peripheral blood smear. Extremely important to review to rule out pseudothrombocytopenia.
* Large platelets (megathrombocytes) are frequently seen with ITP and may indicate peripheral destruction.
* Morphology of red blood cells may indicate DIC or TTP if a microangiopathic picture is present.
* Look for blasts as a sign of acute leukemia. The presence of left-shifted granulocytes, nucleated red blood cells, and teardrops may indicate marrow infiltration.
* Left-shifted granulocytes and toxic granulation are consistent with a bacterial infection.
* Elevated prothrombin time, partial thromboplastin time, and thrombin time may be seen in patients with DIC and liver disease. They are normal in those with ITP and TTP.
* A bleeding time is always abnormal in the face of a low platelet count and is never indicated in the evaluation for thrombocytopenia.
* A decrease in fibrinogen and an increase in D-dimers are suggestive of DIC.
* Antinuclear antibodies (ANA). To help rule out a collagen vascular disease as a cause.
* Blood urea nitrogen and creatinine. Renal failure can cause marrow suppression of megakaryocytes and may coexist with other causes such as sepsis, DIC, and TTP.
* Investigation of bone marrow is essential in the evaluation if there is no obvious reason for thrombocytopenia.
* An adequate or increased number of megakaryocytes implies peripheral destruction.
* Marrow infiltration or primary marrow disease can be identified with a bone marrow aspirate and biopsy (often results in decreased megakaryocytes).
* Megaloblastic changes in the marrow suggest the possibility of vitamin B12 or folate deficiency.
* Liver function tests. Total bilirubin, alkaline phosphatase, and transaminases (AST and ALT) may support viral hepatitis, alcoholic liver disease, or sepsis from a biliary source as the cause.
* CT scan of the abdomen. May demonstrate hepatosplenomegaly or lymphadenopathy in indicated situations.
* Initially, it is important to determine whether there is life threatening bleeding, in which case platelet transfusion is indicated.
* If there is no active bleeding and the thrombocytopenia is immunologic, platelet transfusions are to be avoided. In this situation, transfusions are frequently ineffective and may actually worsen the thrombocytopenia with further immunologic challenge.
* Immune-mediated destruction. If this situation is suspected, all nonessential medicines should be stopped. Do not overlook heparin flush from catheters and Hep-Locks, as well as heparin-banded central venous catheters.
* Treatment of underlying cause. Especially important for leukemias, lymphomas, infections, and DIC.
* ''ITP'': High-dose steroids (1–2 mg/kg prednisone) daily is the initial treatment for ITP. IV immunoglobulins can also be used in steroid-unresponsive ITP or when steroids are contraindicated. Splenectomy may be required in chronic ITP or acute ITP that is unresponsive to steroids or immunoglobulins.
* ''TTP'': Plasmapheresis, High-dose prednisone.
* Frequently, transfusions are given for platelet counts < 20,000/μL. Three units per meter squared, or approximately 6 units, should give an adequate increment in most adults.
* Chemotherapy-related thrombocytopenia. Oprelvekin (Neumega), a recombinant human interleukin-2, may be used for prevention of severe thrombocytopenia, and may decrease the need for platelet transfusion after myelosuppressive chemotherapy in nonmyeloid malignancies.
<div id="body_content">
Thrombocytosis is an abnormally high platelet count, usually > 400 * 10<sup>9</sup>/l.<br><br>Causes of thrombocytosis<br><ul><li>reactive: platelets are an acute phase reactant - platelet count can increase in response to stress such as a severe infection, surgery. Iron deficiency anaemia can also cause a reactive thrombocytosis</li><li>malignancy</li><li>essential thrombocytosis (see below), or as part of another myeloproliferative disorder such as chronic myeloid leukaemia or polycythaemia rubra vera</li><li>hyposplenism</li></ul><br><b>Essential thrombocytosis</b><br><br>Essential thrombocytosis is one of the myeloproliferative disorders which overlaps with chronic myeloid leukaemia, polycythaemia rubra vera and myelofibrosis. Megakaryocyte proliferation results in an overproduction of platelets.<br><br>Features<br><ul><li>platelet count > 600 * 10<sup>9</sup>/l</li><li>both thrombosis (venous or arterial) and haemorrhage can be seen</li><li>a characteristic symptom is a burning sensation in the hands</li><li>a JAK2 mutation is found in around 50% of patients</li></ul><br>Management<br><ul><li>hydroxyurea (hydroxycarbamide) is widely used to reduce the platelet count</li><li>interferon-α is also used in younger patients</li><li>low-dose aspirin may be used to reduce the thrombotic risk</li></ul></div>
Thrombolytic drugs activate plasminogen to form plasmin. This in turn degrades fibrin and help breaks up thrombi. They in primarily used in patients who present with a ST elevation myocardial infarction. Other indications include acute ischaemic stroke and pulmonary embolism, although strict inclusion criteria apply.
!!!Examples
* alteplase
* tenecteplase
* streptokinase
!!!Contraindications to thrombolysis
* active internal bleeding
* recent haemorrhage, trauma or surgery (including dental extraction)
* recent head injury
* coagulation and bleeding disorders
* intracranial neoplasm
* stroke < 3 months
* aortic dissection
* severe hypertension
!!!!Relative Contraindications
* pregnancy
* recent Delivery
* peptic ulcer disease
!!!Side-effects
* haemorrhage
* hypotension - more common with streptokinase
* allergic reactions may occur with streptokinase
Thrombolysis: Benefit reduces steadily from onset of pain, target time is <30min from admission; use >12h from symptom onset requires specialist advice.
Do not thrombolyse ST depression alone, T-wave inversion alone, or normal ECG.
Thrombolysis is best achieved with tissue plasminogen activators (eg tenect- eplase as a single IV bolus).
''CI: ''
* Previous intracranial haemorrhage.
* Ischaemic stroke <6months.
* Cerebral malignancy or AVM.
* Recent major trauma/surgery/ head injury (<3wks).
* GI bleeding (<1 month).
* Known bleeding disorder.
* Aortic dissection.
* Non-compressible punctures <24h, eg liver biopsy, lumbar puncture.
''Relative CI: ''
* TIA <6 months.
* Anticoagulant therapy.
* Pregnancy/<1wk post partum.
* Refractory hypertension (>180mmHg/110mmHg).
* Advanced liver disease.
* Infective endocarditis.
* Active peptic ulcer.
* Prolonged/traumatic resuscitation
<div id="passmedicine-body">Disorders of thyroid function are very commonly encountered in clinical practice. Around 2% of the UK population has hypothyroidism (an under active thyroid gland) whilst around 1% have thyrotoxicosis (an over active gland). Both hypothyroidism and hyperthyrodism (also known as thyrotoxicosis) are around 10 times more common in women than men.<br><br><br><b>Structure and function</b><br><br>The thyroid gland is one of the largest endocrine organs in the body. It is a bi-lobed structure which is found in the anterior neck. As with many endocrine organs, it is part of a hypothalamus-pituitary-end organ system with negative feedback cycles to maintain normal circulating levels of the hormone, in this case thyroxine and triiodothyronine. <br><br>On a simple level the hypothalamus secretes thyrotropin-releasing hormone (TRH) which stimulates the anterior pituitary to secrete thyroid-stimulating hormone (TSH). This then acts on the thyroid gland increasing the production of thyroxine (T4) and triiodothyronine (T3), the two main thyroid hormones. These then act on a wide variety of tissues, helping to regulate the use of energy sources, protein synthesis, and controls the body's sensitivity to other hormones.<br><br><br><b>How are thyroid problems classified?</b><br><br>Hypothyroidism may be classified as follows:<br><ul><li>primary hypothyroidism: there is a problem with the thyroid gland itself, for example an autoimmune disorder affecting thyroid tissue (see below)</li><li>secondary hypothyroidism: usually due to a disorder with the pituitary gland (e.g.pituitary apoplexy) or a lesion compressing the pituitary gland</li><li>congenital hypothyroidism: due to a problem with thyroid dysgenesis or thyroid dyshormonogenesis </li></ul><br>Whilst there are a number of causes thyrotoxicosis the vast majority are primary in nature. Congenital thyrotoxicosis is not seen and secondary hyperthyroidism is rare, account for less than 1% of cases.<br><br><br><b>What causes thyroid problems?</b><br><br>The majority of thyroid problems seen in the developed world are a consequence of autoimmunity.<br><br>The table below shows the different autoimmune problems which cause thyroid dysfunction:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th>Hypothyroidism</th><th>Thyrotoxicosis</th></tr></thead><tbody><tr><td><b>Most common cause</b></td><td>Hashimoto's thyroiditis <br><ul><li><span class="concept" data-cid="5976">most common cause in the developed world</span></li><li>autoimmune disease, associated with type 1 diabetes mellitus, Addison's or pernicious anaemia</li><li>may cause transient thyrotoxicosis in the acute phase</li><li>5-10 times more common in women</li></ul></td><td>Graves' disease<br><ul><li><span class="concept" data-cid="5977">most common cause of thyrotoxicosis</span></li><li>as well as typically features of thyrotoxicosis other features may be seen including thyroid eye disease</li></ul></td></tr><tr><td><b>Other causes</b></td><td>Subacute thyroiditis (de Quervain's)<br><ul><li>associated with a painful goitre and raised ESR</li></ul><br>Riedel thyroiditis<br><ul><li><span class="concept" data-cid="5983">fibrous tissue replacing the normal thyroid parenchyma</span></li><li>causes a painless goitre </li></ul><br>Postpartum thyroiditis<br><br>Drugs<br><ul><li>lithium</li><li>amiodarone</li></ul><br>Iodine deficiency <br><ul><li><span class="concept" data-cid="5985">the most common cause of hypothyroidism in the developing world</span></li></ul></td><td>Toxic multinodular goitre<br><ul><li>autonomously functioning thyroid nodules that secrete excess thyroid hormones</li></ul><br>Drugs<br><ul><li><span id="concept_popover_id_6496" class="concept concept-0 trigger-link" data-cid="6496" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6496'>You've never been tested on this concept</div><br><div id='div_concept_rating6496' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(183,255,0)'>Importance: <b>64</b></span> </div>" data-original-title="Amiodarone may cause hyperthyroidism">amiodarone</span></li></ul></td></tr></tbody></table></div><br>It should be remembered that a lot of the conditions mentioned above don't always cause either hypothyroidism or hyperthyroidism, there is sometimes some overlap, as shown below:<br><br>
<center><img src="https://www.dropbox.com/s/n0hrhxbu5shpnqv/thyroid.png?raw=1
" width="500"></center>
<div class="imagetext">Venn diagram showing how different causes of thyroid dysfunction may manifest. Note how many causes of hypothyroidism may have an initial thyrotoxic phase.</div><br><br><b>Symptoms and signs</b><br><br>Thyroid disorders can present in a large variety of ways. Often (but not always) the symptoms present are the opposite depending on whether the thyroid gland is under or over active, for example hypothyroidism may result in weight gain whilst thyrotoxicosis normally leads to weight loss<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Feature</th><th>Hypothyroidism</th><th>Thyrotoxicosis</th></tr></thead><tbody><tr><td><b>General</b></td><td><b>Weight gain </b><br><br><b><span class="concept" data-cid="5955">Lethargy</span></b><br><br><b><span class="concept" data-cid="5956">Cold intolerance</span></b></td><td><b><span class="concept" data-cid="5964">Weight loss</span></b><br><br>'Manic', <span class="concept" data-cid="5965">restlessness</span><br><br><span class="concept" data-cid="5973">Heat intolerance</span></td></tr><tr><td><b>Cardiac</b></td><td>-</td><td><b><span class="concept" data-cid="5972">Palpitations</span></b>, may even provoke arrhythmias e.g. <span class="concept" data-cid="5971">atrial fibrillation</span></td></tr><tr><td><b>Skin</b></td><td><span class="concept" data-cid="5963">Dry (anhydrosis), cold, yellowish skin</span><br><br><span class="concept" data-cid="5962">Non-pitting oedema (e.g. hands, face)</span><br><br><span class="concept" data-cid="5961">Dry, coarse scalp hair, loss of lateral aspect of eyebrows</span><br></td><td><span class="concept" data-cid="5970">Increased sweating</span><br><br><span class="concept" data-cid="5969">Pretibial myxoedema</span>: erythematous, oedematous lesions above the lateral malleoli<br><br><span class="concept" data-cid="5968">Thyroid acropachy: clubbing</span></td></tr><tr><td><b>Gastrointestinal</b></td><td><span class="concept" data-cid="5960">Constipation</span></td><td><span class="concept" data-cid="5967">Diarrhoea</span></td></tr><tr><td><b>Gynaecological</b></td><td><span class="concept" data-cid="5959">Menorrhagia</span></td><td><span class="concept" data-cid="5966">Oligomenorrhea</span></td></tr><tr><td><b>Neurological</b></td><td><span class="concept" data-cid="5958">Decreased deep tendon reflexes</span><br><br><span class="concept" data-cid="5957">Carpal tunnel syndrome</span></td><td><b><span class="concept" data-cid="5974">Anxiety</span></b><br><br><b><span class="concept" data-cid="5975">Tremor</span></b></td></tr></tbody></table></div><br><br><b>Investigations and diagnosis</b><br><br>The principle investigation is 'thyroid function tests', or TFTs for short:<br><ul><li>these primarily look at serum TSH and T4 levels</li><li>T3 can be measured but is only useful clinically in a small number of cases</li><li>remember that TSH and T4 levels will often be 'opposite' in cases of primary hypo- or hyperthyroidism. For example in hypothyroidism the T4 level is low (i.e. not enough thyroxine) but the TSH level is high, because the hypothalamus/pituitary has detected low levels of T4 and is trying to get the thyroid gland to produce more</li><li>TSH levels are more sensitive than T4 levels for monitoring patients with existing thyroid problems and are often used to guide treatment</li></ul><br>The table below shows how thyroid function tests are interpreted:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th><b>Diagnosis</b></th><th><b>TSH</b></th><th><b>Free T4</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="5987">Thyrotoxicosis</span> (e.g. Graves' disease)</td><td>Low</td><td>High</td><td></td></tr><tr><td><span class="concept" data-cid="5988">Primary hypothyroidism</span> (e.g. Hashimoto's thyroiditis)</td><td>High</td><td>Low</td><td></td></tr><tr><td><span id="concept_popover_id_5989" class="concept concept-1 trigger-link" data-cid="5989" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5989'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating5989' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(71,255,0)'>Importance: <b>86</b></span> </div>" data-original-title="TSH: Low, T4: Low - secondary hypothyroidism">Secondary hypothyroidism</span></td><td>Low</td><td>Low</td><td></td></tr><tr><td><span id="concept_popover_id_5990" class="concept concept-0 trigger-link" data-cid="5990" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5990'>You've never been tested on this concept</div><br><div id='div_concept_rating5990' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(91,255,0)'>Importance: <b>82</b></span> </div>" data-original-title="TSH: Low, T4: Low - sick euthyroid syndrome">Sick EuThyroid syndrome</span></td><td>Low</td><td>Low</td><td>Common in hospital inpatients. Changes are reversible upon recovery from the systemic illness and no treatment is usually needed</td></tr><tr><td><span class="concept" data-cid="5991">Subclinical hypothyroidism</span></td><td>High</td><td>Normal</td><td>This is a common finding and represents patients who are 'on the way' to developing hypothyroidism but still have normal thyroxine levels. Note how the TSH levels, as mentioned above, are a more sensitive and early marker of thyroid problems</td></tr><tr><td><span id="concept_popover_id_5992" class="concept concept-0 trigger-link" data-cid="5992" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative5992'>You've never been tested on this concept</div><br><div id='div_concept_rating5992' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(188,255,0)'>Importance: <b>63</b></span> </div>" data-original-title="TSH: High, T4: Normal - poor compliance with thyroxine">Poor compliance with thyroxine</span></td><td>High</td><td>Normal</td><td>Patients who are poorly compliant may only take their thyroxine in the days before a routine blood test. The thyroxine levels are hence normal but the TSH 'lags' and reflects longer term low thyroxine levels</td></tr></tbody></table></div><br>A number of thyroid autoantibodies can be tested for (remember the majority of thyroid disorders are autoimmune). The 3 main types are:<br><ul><li>Anti-thyroid peroxidase (anti-TPO) antibodies</li><li>TSH receptor antibodies</li><li>Thyroglobulin antibodies</li></ul><br>There is significant overlap between the type of antibodies present and particular diseases, but generally speaking <span class="concept" data-cid="5980">TSH receptor antibodies are present in around 90-100% of patients with Graves' disease</span> and <span class="concept" data-cid="5981">anti-TPO antibodies are seen in around 90% of patients with Hashimoto's thyroiditis</span>.<br><br>Other tests include:<br><ul><li>nuclear scintigraphy; toxic multinodular goitre reveals patchy uptake</li></ul><br><br><b>Treatment</b><br><br>This clearly depends on the cause. For patients with hypothyrodism thyroxine is given in the form of levothyroxine to replace the underlying deficiency.<br><br>Patients with thyrotoxicosis may be treated with:<br><ul><li>propranolol: this is often used at the time of diagnosis to control thyrotoxic symptoms such as tremor</li><li>carbimazole: blocks thyroid peroxidase from coupling and iodinating the tyrosine residues on thyroglobulin → reducing thyroid hormone production. Agranulocytosis is an important adverse effect to be aware of</li><li>radioiodine treatment</li></ul></div>
---
>Lo Lo Secondary Sick - Secondary Hypothyroid & Sick Euthyroid - Low Low
>Sub Poor hain - SubClinical & Poor Compliance
`The definition of a TIA is now tissue-based, not time-based: a transient episode of neurologic dysfunction caused by focal brain, spinal cord, or retinal ischaemia, without acute infarction`
<div id="notecontent">The original definition of a transient ischaemic attack (TIA) was time-based: a sudden onset of a focal neurologic symptom and/or sign lasting less than 24 hours, brought on by a transient decrease in blood flow. However, this has now changed as it is recognised that even short periods of ischaemia can result in pathological changes to the brain. Therefore, a new '<b>tissue-based'</b> definition is now used: <span class="concept" data-cid="9800">a transient episode of neurologic dysfunction caused by focal brain, spinal cord, or retinal ischaemia, without acute infarction.</span><br><br>Patients often use the term 'mini-stroke' for TIAs.<br><br><b>Assessment and referral</b><br><br>The ABCD2 prognostic score has previously been used to risk stratify patients who present with a suspected TIA. However, data from studies have suggested it performs poorly and it is therefore no longer recommended by NICE Clinical Knowledge Summaries. Instead, NICE recommend:<br><br>Immediate antithrombotic therapy:<br><ul><li>give aspirin 300 mg immediately, unless </li><li>1. the patient has a bleeding disorder or is taking an anticoagulant (<span class="concept" data-cid="4061">needs immediate admission for imaging to exclude a haemorrhage</span>)</li><li>2. the patient is already taking low-dose aspirin regularly: continue the current dose of aspirin until reviewed by a specialist</li><li>3. Aspirin is contraindicated: discuss management urgently with the specialist team</li></ul><br>If the patient has had more than 1 TIA ('crescendo TIA') or has a suspected cardioembolic source or severe carotid stenosis:<br><ul><li>discuss the need for admission or observation urgently with a stroke specialist</li></ul><br>If the patient has had a suspected TIA in the last 7 days:<br><ul><li>arrange urgent assessment (within 24 hours) by a specialist stroke physician</li></ul><br>If the patient has had a suspected TIA which occurred more than a week previously:<br><ul><li>refer for specialist assessment as soon as possible within 7 days</li></ul><br>Advise the person not to drive until they have been seen by a specialist.<br><br><br><b>Further management</b><br><br>Antithrombotic therapy<br><ul><li><span id="concept_popover_id_279" class="concept concept-0 trigger-link" data-cid="279" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative279'>You've never been tested on this concept</div><br><div id='div_concept_rating279' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(173,255,0)'>Importance: <b>66</b></span> </div>" data-original-title="Antiplatelets
- TIA: clopidogrel
- ischaemic stroke: clopidogrel">clopidogrel is recommended first-line (as for patients who've had a stroke)</span></li><li>aspirin + dipyridamole should be given to patients who cannot tolerate clopidogrel</li><li>these recommendations follow the 2012 Royal College of Physicians National clinical guideline for stroke. Please see the link for more details (section 5.5)</li><li>these guidelines may change following the CHANCE study (NEJM 2013;369:11). This study looked at giving high-risk TIA patients aspirin + clopidogrel for the first 90 days compared to aspirin alone. 11.7% of aspirin only patients had a stroke over 90 days compared to 8.2% of dual antiplatelet patients</li></ul><br>With regards to carotid artery endarterectomy:<br><ul><li>recommend if patient has suffered stroke or TIA in the carotid territory and are not severely disabled</li><li>should only be considered if <span class="concept" data-cid="2583">carotid stenosis > 70%</span> according ECST* criteria or > 50% according to NASCET** criteria</li></ul><br>*European Carotid Surgery Trialists' Collaborative Group<br>**North American Symptomatic Carotid Endarterectomy Trial</div>
<div id="notecontent"><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Meniere's disease</b></th><th>Associated with hearing loss, vertigo, tinnitus and sensation of fullness or pressure in one or both ears</th></tr></thead><tbody><tr><td><b>Otosclerosis</b></td><td>Onset is usually at 20-40 years<br>Conductive deafness<br>Tinnitus<br>Normal tympanic membrane*<br>Positive family history</td></tr><tr><td><b>Acoustic neuroma</b></td><td>Hearing loss, vertigo, tinnitus<br>Absent corneal reflex is important sign<br>Associated with neurofibromatosis type 2</td></tr><tr><td><b>Hearing loss</b></td><td>Causes include excessive loud noise and presbycusis</td></tr><tr><td><b>Drugs</b></td><td><span class="concept" data-cid="10556">Aspirin/NSAIDs</span><br>Aminoglycosides<br><span class="concept" data-cid="1604">Loop diuretics</span><br>Quinine</td></tr></tbody></table></div><br>Other causes include<br><ul><li>impacted ear wax</li><li>chronic suppurative otitis media</li></ul><br>*10% of patients may have a 'flamingo tinge', caused by hyperaemia</div>
`Tetralogy of Fallot (TOF) is the most common cause of cyanotic congenital heart disease typically presenting at around 1-2 months`
<div id="body_content">
Tetralogy of Fallot (TOF) is the most common cause of cyanotic congenital heart disease*. It typically presents at around 1-2 months, although may not be picked up until the baby is 6 months old<br><br>TOF is a result of anterior malalignment of the aorticopulmonary septum. The four characteristic features are:<br><ul><li>ventricular septal defect (VSD)</li><li>right ventricular hypertrophy</li><li>right ventricular outflow tract obstruction, pulmonary stenosis</li><li>overriding aorta</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd013b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd013.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd013b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>The severity of the right ventricular outflow tract obstruction determines the degree of cyanosis and clinical severity<br><br>Other features<br><ul><li>cyanosis</li><li>causes a right-to-left shunt</li><li>ejection systolic murmur due to pulmonary stenosis (the VSD doesn't usually cause a murmur)</li><li>a right-sided aortic arch is seen in 25% of patients</li><li>chest x-ray shows a 'boot-shaped' heart, ECG shows right ventricular hypertrophy</li></ul><br>Management<br><ul><li>surgical repair is often undertaken in two parts</li><li>cyanotic episodes may be helped by beta-blockers to reduce infundibular spasm</li></ul><br>*however, at birth transposition of the great arteries is the more common lesion as patients with TOF generally present at around 1-2 months</div>
---
;First 24 hours: Transposition of Great Arteries - First 1-2 months TOF
---
>TETRA signs for TETROLOGY
*Congenital Heart Failure signs - Tachypnea - Tachycardia - Cardiomegaly - Hepatomegaly
Tranexamic acid is a synthetic derivative of lysine. Its primary mode of action is as an antifibrinolytic that reversibly binds to lysine receptor sites on plasminogen or plasmin. This prevents plasmin from binding to and degrading fibrin.
Tranexamic acid is most commonly prescribed to help treat menorrhagia.
The role of tranexamic acid in trauma was investigated in the CRASH 2 trial and has been shown to be of benefit in bleeding trauma when administered in the first 3 hours. Tranexamic acid is given as an IV bolus followed by an infusion in cases of major haemorrhage.
There is also ongoing research looking at the role of tranexamic acid in traumatic brain injury.
!!!<center>''TRANSFUSION REACTION''</center>
<hr>
* During a transfusion of packed red blood cells (PRBCs), the patient’s temperature rises to 38.5 °C (101.3 °F).
* Immediate Questions. Fever is a common complication of transfusion of PRBCs and may result from infusion of a bacterially contaminated unit, mistransfusion of an ABO-incompatible unit, or a self-limited febrile associated transfusion reaction. The first two conditions are life-threatening, and your initial evaluation is directed at differentiating among these.
* What are the patient’s vital signs? Presenting signs and symptoms of fever and chills, tachycardia, and tachypnea are nonspecific and do not allow you to differentiate reliably between a self-limited and a life-threatening transfusion reaction. Hypotension suggests a severe hemolytic transfusion reaction.
* Does the patient have any complaints? Fever, frequently accompanied by shaking chills, may be the only clinical symptom of a febrile nonhemolytic transfusion reaction. However, severe acute hemolytic reactions are often accompanied by other symptoms, including nausea, vomiting, headache, and back pain. Often patients experience bronchospasm and pulmonary edema.
* Is there any evidence of generalized bleeding from mucosal membranes, previous venipuncture sites, or the present IV site?
* Diffuse bleeding would be consistent with disseminated intravascular coagulation (DIC); it suggests a severe, life-threatening hemolytic reaction.
* Has the patient ever had a transfusion? If so, has she or he ever reacted to blood products in the past?
* Most important, does the name on the unit of PRBCs match that on the patient’s armband?
* If a serious transfusion reaction is suspected, the transfusion should be stopped immediately.
* Start IVF,monitor urine output
* If oliguria occurs, diuretics and mannitol may be required.
* If suspecting DIC: then platelets and cryoprecipitate
* Self-limiting febrile transfusion reactions. Antihistamines and antipruritics may be administered.
* Meperidine (Demerol) may be used for patients experiencing severe shaking chills.
!!!Transient synovitis
is sometimes referred to as irritable hip. It generally presents as acute hip pain associated with a viral infection. The typical age group is 2-10 years.
A low-grade fever is present in a minority of patients but high fever should raise the suspicion of other causes such as septic arthritis.
It is the commonest cause of hip pain in children.
Transient synovitis is self-limiting, requiring only rest and analgesia.
!!!<center>''TRAUMA PATIENT''</center>
<hr>
* Initial survey of the trauma pt for rapid identification of life threatening injuries
* Eval in ABCDE order: Airway, breathing or ventilation, circulation, disability, exposure or environmental control
<iframe width="806" height="453" src="https://www.youtube.com/embed/hLuC0T7RsKI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<center>''Primary Survey''</center>
<hr>
''Airway maintenance w/cspine immobilization''
* Talking → airway patent → frequent reassessment
* Unable to talk → eval for FB/facial fractures/tracheal/laryngeal injury/other obstruction → if obstruction not reversible w/ chin lift jaw/thrust or GCS <8 → intubation w/c-spine immobilization
* Severe facial/neck trauma be prepared for surgical airway
''Breathing/ventilation''
* Eval chest wall excursion/bilateral breath sounds/chest wall (flail chest, crepitance, open chest wound, tracheal injury) → identify/repair injuries that impair ventilation; tension ptx (needle decompression/finger or tube thoracostomy), flail chest w/ pulm contusion, massive hemothorax (tube thoracostomy → >1500 cc blood out or >200 cc/h or unstable HD → OR), open ptx
''Circulation''
* Hypotension/altered MS/confusion/mottled skin/thready pulse/diminished pulse = hemorrhage/hypovolemia until proven o/w → place multiple large-bore IVs/control external hemorrhage → resuscitate w/ 2 L NS → persistent hypotension; transfuse PRBC (males O+, females O−), consider massive transfusion protocol (1 PRBC:1 FFP:1 PLTs) if persistent transfusion requirements, consider permissive hypotension (SBP 70–100 mmHg) & restrictive use of fluids
* FAST exam to evaluate for intra-abd hemorrhage → + FAST + persistent hypotension = OR
''Disability''
* Rapid neurologic assessment; AVPU (Alert, responds to Verbal stimuli, responds to Painful stimuli, Unresponsive), GCS
''Exposure/environmental''
* Remove clothes, avoid hypothermia (massive transfusions/environmental exposures) can lead to coagulopathies (warmed blankets/IVF)
<div id="notecontent">Basics<br><ul><li>primary brain injury may be focal (contusion/haematoma) or diffuse (diffuse axonal injury)</li><li>diffuse axonal injury occurs as a result of mechanical shearing following deceleration, causing disruption and tearing of axons</li><li>intra-cranial haematomas can be extradural, subdural or intracerebral, while contusions may occur adjacent to (coup) or contralateral (contre-coup) to the side of impact</li><li>secondary brain injury occurs when cerebral oedema, ischaemia, infection, tonsillar or tentorial herniation exacerbates the original injury. The normal cerebral auto regulatory processes are disrupted following trauma rendering the brain more susceptible to blood flow changes and hypoxia</li><li>the Cushings reflex (hypertension and bradycardia) often occurs late and is usually a pre terminal event</li></ul><br>
<div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Type of injury</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><b>Extradural (epidural) haematoma</b></td><td>Bleeding into the space between the dura mater and the skull. Often results from acceleration-deceleration trauma or a blow to the side of the head. The majority of epidural haematomas occur in the temporal region where skull fractures cause a rupture of the middle meningeal artery.<br><br>Features<br><ul><li>features of raised intracranial pressure</li><li>some patients may exhibit a <span id="concept_popover_id_8294" class="concept concept-3-u trigger-link" data-cid="8294" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8294'>You've answered questions on this concept 2 times:<ul><li>1 week ago: <i class='fa fa-check' style='color:green'></i></li><li>3 weeks ago: <i class='fa fa-check' style='color:green'></i></li></ul></div><br><div id='div_concept_rating8294' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(168,255,0)'>Importance: <b>67</b></span> </div>" data-original-title="Head injury, lucid interval - extradural (epidural) haematoma">lucid interval</span></li></ul></td></tr><tr><td><b>Subdural haematoma</b></td><td>Bleeding into the outermost meningeal layer. Most commonly occur around the frontal and parietal lobes.<br><br>Risk factors include <span id="concept_popover_id_8295" class="concept concept-3-u trigger-link" data-cid="8295" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative8295'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating8295' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(214,255,0)'>Importance: <b>58</b></span> </div>" data-original-title="Elderly, alcoholic, head injury, insidiuous onset symptom - subdural haematoma">old age, alcoholism</span> and anticoagulation.<br><br>Slower onset of symptoms than a epidural haematoma. There may be <span id="concept_popover_id_485" class="concept concept-3-u trigger-link" data-cid="485" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative485'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating485' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(81,255,0)'>Importance: <b>84</b></span> </div>" data-original-title="Fluctuating confusion/consciousness? - subdural haematoma">fluctuating confusion/consciousness</span></td></tr><tr><td><b>Subarachnoid haemorrhage</b></td><td>Classically causes a <span class="concept" data-cid="8296">sudden occipital headache</span>. Usually occurs spontaneously in the context of a ruptured cerebral aneurysm but may be seen in association with other injuries when a patient has sustained a traumatic brain injury</td></tr></tbody></table>
</div><br><b>Image gallery</b><br><br>Extradural (epidural) haematoma:<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb033b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb033.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb033b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb032b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb032.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb032b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb034b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb034.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb034b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><br>Subdural haematoma:<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb031b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb031.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb031b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb002b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb002.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb002b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><br>Subarachnoid haemorrhage:<br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb035b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb035.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb035b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb179b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb179.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb179b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
---
<div id="notecontent"><i>Trichomonas vaginalis</i> is a highly motile, flagellated protozoan parasite. Trichomoniasis is a sexually transmitted infection (STI).<br><br>Features<br><ul><li>vaginal discharge: offensive, yellow/green, frothy</li><li>vulvovaginitis</li><li>strawberry cervix</li><li>pH > 4.5</li><li>in men is usually asymptomatic but may cause urethritis</li></ul><br>Investigation<br><ul><li>microscopy of a wet mount shows motile trophozoites</li></ul><br>Management<br><ul><li>oral metronidazole for 5-7 days, although the BNF also supports the use of a one-off dose of 2g metronidazole</li></ul><br>
<center>
<img width=600 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd904b.png">
</center>
<center>
Comparison of bacterial vaginosis and <i>Trichomonas vaginalis</i><br><br><br>
</center>
<center>
<img width=500 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb001b.jpg">
</center>
<center>
<i>Trichomonas vaginalis</i> - largely transparent core with finely granular eosinophilic cytoplasm. Surrounded by neutrophils with segmented nuclei<br><br><br>
</center>
<center><img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/uwa006.jpg"></center></div>
!!!<center>''TRICHOMONIASIS''</center>
<hr>
* Metrogyl 2g PO once OR Metrogyl 400 BD 7d
<div id="notecontent">Trigeminal neuralgia is a pain syndrome characterised by severe unilateral pain. The vast majority of cases are idiopathic but compression of the trigeminal roots by tumours or vascular problems may occur.<br><br>The International Headache Society defines trigeminal neuralgia as:<br><ul><li>a unilateral disorder characterised by brief electric shock-like pains, abrupt in onset and termination, limited to one or more divisions of the trigeminal nerve</li><li>the pain is commonly evoked by light touch, including washing, shaving, smoking, talking, and brushing the teeth (trigger factors), and frequently occurs spontaneously</li><li>small areas in the nasolabial fold or chin may be particularly susceptible to the precipitation of pain (trigger areas)</li><li>the pains usually remit for variable periods</li></ul><br>NICE Clinical Knowledge Summaries list the following as red flag symptoms and signs suggesting a serious underlying cause:<br><ul><li>Sensory changes</li><li>Deafness or other ear problems</li><li>History of skin or oral lesions that could spread perineurally</li><li>Pain only in the ophthalmic division of the trigeminal nerve (eye socket, forehead, and nose), or bilaterally</li><li>Optic neuritis</li><li>A family history of multiple sclerosis</li><li>Age of onset before 40 years</li></ul><br>Management<br><ul><li>carbamazepine is first-line</li><li>failure to respond to treatment or atypical features (e.g. < 50 years old) should prompt referral to neurology</li></ul></div>
Triptans are specific 5-HT1B and 5-HT1D agonists used in the acute treatment of migraine. They are generally used first-line in combination therapy with an NSAID or paracetamol.
Prescribing points
* should be taken as soon as possible after the onset of headache, rather than at onset of aura
* oral, orodispersible, nasal spray and subcutaneous injections are available
Adverse effects
*'triptan sensations' - tingling, heat, tightness (e.g. throat and chest), heaviness, pressure
Contraindications
*patients with a history of, or significant risk factors for, ischaemic heart disease or cerebrovascular disease
---
>TT - hT1b - hT1d
---
>Avoid SUMA in Heart attack or Stroke
*Contra: IHD or Stroke
!!Gestational trophoblastic disorders
Describes a spectrum of disorders originating from the placental trophoblast:
* complete hydatidiform mole
* partial hydatidiform mole
* choriocarcinoma
;Complete hydatidiform mole
:Benign tumour of trophoblastic material. Occurs when an empty egg is fertilized by a single sperm that then duplicates its own DNA, hence the all 46 chromosomes are of paternal origin
!!!Features
* bleeding in first or early second trimester
* exaggerated symptoms of pregnancy e.g. hyperemesis
* uterus large for dates
* very high serum levels of human chorionic gonadotropin (hCG)
* hypertension and hyperthyroidism* may be seen
!!!Management
* urgent referral to specialist centre - evacuation of the uterus is performed
* effective contraception is recommended to avoid pregnancy in the next 12 months
Around 2-3% go on to develop choriocarcinoma
In a ''partial mole'' a normal haploid egg may be fertilized by two sperms, or by one sperm with duplication of the paternal chromosomes. Therefore the DNA is both maternal and paternal in origin. Usually triploid - e.g. 69 XXX or 69 XXY. Fetal parts may be seen
*hCG can mimic thyroid-stimulating hormone (TSH)
!!!<center>''TROPICAL FEVERS''</center>
<hr>
* Some of these occur throughout the year and some especially in rainy and post-rainy season.
* These included Dengue hemorrhagic fever, rickettsial infections/scrub typhus, malaria (usually falciparum), typhoid, and leptospira bacterial sepsis and common viral infections like influenza.
''Five major clinical syndromes''
# undifferentiated fever
# fever with rash / thrombocytopenia
# fever with (ARDS)
# fever with encephalopathy and
# fever with multi organ dysfunction syndrome.
* ''Undifferentiated fever:'' Malaria (P. falciparum), scrub typhus, leptospirosis, typhoid, dengue and other common viral illness.
* ''Fever with Rash/Thrombocytopenia:'' Dengue, rickettsial infections, meningococcal infection, malaria (usually falciparum), leptospirosis, measles, rubella and other viral exanthem.
* ''Fever with ARDS:'' Scrub typhus, falciparum malaria, influenza including H1N1, leptospirosis, hantavirus infection, melioidosis, severe CAP and diffuse alveolar hemorrhage due to collagen vascular diseases.
* ''Febrile encephalopathy:'' Encephalitis (Herpes simplex virus encephalitis, Japanese B and other viral encephalitis), meningitis (S. pneumoniae, Neisseria meningitidis, Haemophilus influenzae, enteroviruses), scrub typhus, cerebral malaria and typhoid encephalopathy.
* ''Fever with multiorgan dysfunction:'' Bacterial sepsis, falciparum malaria, leptospirosis, scrub typhus, dengue, hepatitis A or E with fulminant hepatic failure and hepato-renal syndrome, Hanta virus infection, hemophagocytosis and macrophage activation syndrome.
<hr>
<center>''Scrub typhus''</center>
<hr>
* Fever, headache and myalgia, breathing difficulty, delirium, vomiting, cough, jaundice
* ''Complications:'' Overwhelming pneumonia with ARDS like presentation, hepatitis, aseptic meningitis, myocarditis and (DIC).
* Do ELISA for IgG and IgM antibodies
* Treatment: First line: Doxycycline 100 mg BD for 7 days, Azithromycin or Rifampicin as alternatives in children and pregnant women.
<hr>
<center>''Leptospirosis''</center>
<hr>
* ''Anicteric:'' Abrupt onset of fever, chills, headache, myalgia, abdominal pain, conjunctival suffusion, transient skin rash.
* ''Icteric:'' (5-15%); Jaundice, proteinuria, hematuria, oliguria and/or anuria, pulmonary hemorrhages, ARDS, myocarditis.
* ''Diagnosis:'' Raised CPK, Culture (blood, CSF, urine), Positive serology, Microscopic agglutination test, IgM ELISA
* ''Treatment:'' First line: Penicillin G 1.5 MU 6 hourly for 7 days, Alternative: III gen cephalosporins. Doxycycline in uncomplicated infections.
<hr>
<center>''Dengue''</center>
<hr>
* Headache, retro-orbital pain, myalgia, arthralgia, rash
* Dengue Hemorrhagic fever: Thrombocytopenia (<100,000), skin, mucosal and gastrointestinal bleeds, third spacing, rise in hematocrit
* Dengue shock syndrome: Weak pulse, cold clammy extremities, pulse pressure < 20 mmHg, hypotension
* Expanded dengue syndrome: Encephalitis, myocarditis, hepatitis, renal failure, ARDS, hemophagocytosis.
* ''Diagnosis:'' NS1 (Rapid card test), IgM, IgG
* ''Treatment:'' supportive care, IVF, blood transfusion as needed
<hr>
<center>''Malaria''</center>
<hr>
* Paroxysm of fever, shaking chills and sweats occur every 48 or 72 h, depending on the species. Hepatosplenomegaly may be present.
* Manifestations of severe malaria: Cerebral malaria (sometimes with coma), Severe anemia, Hypoglycemia, Metabolic acidosis, Acute renal failure (creatinine > 3 mg/dl), ARDS, Shock, DIC
* Rapid diagnostic tests (RDTs); Malaria ruled out if two negative RDTs.
* Inj Artesunate, 2.4 mg/kg i.v. bolus at admission, 12 h and 24 h; followed by once a day for 7 days + Doxycycline 100 mg 12 hourly.
<hr>
<center>''Enteric/Typhoid fever''</center>
<hr>
* 1st week - fever, headache, relative bradycardia
* 2nd week - Abdominal pain, diarrhea, constipation, hepatosplenomegaly, encephalopathy
* 3rd week - Intestinal bleeding, perforation, MODS
* ''Diagnosis:'' Typhidot
* First line: Ceftriaxone IV 50-75 mg/kg/day for 10-14 days; Azithromycin and Ciprofloxacin are alternatives
* Consider dexamethasone 3 mg/kg followed by 1 mg/kg 6 hourly for 48 h in selected cases with encephalopathy, hypotension or DIC
<hr>
<center>''Japanese encephalitis''</center>
<hr>
* Prodromal period-fever, headache, vomiting and myalgia. Neurological features - range from mild confusion to agitation to overt coma. Parkinson like extrapyramidal signs are common, including mask like facies, tremor, rigidity and choreoathetoid movements.
* ''Diagnosis:'' IgM capture ELISA
* ''Treatment:'' Supportive-Airway management, seizure control and management of raised intracranial pressure.
<hr>
<center>''Empiric management''</center>
<hr>
* ''Diagnosis:'' CBC, KFT, LFT, Blood cultures, urine RE and cultures,CXR, MP card, Typhidot, Dengue NS1 and Ig G, H1N1 PCR
* ''Empiric Rx:'' Inj Ceftriaxone 100 mg/kg/day + Tab Doxycycline 100 mg BD + Azithromycin 500 mg OD
* Send for serology for scrub typhus (weil felix,IFA), Dengue NS1, IgG, Leptospira IgM dot ELISA, Widal, USG abd,
<hr>
<center>''Syndrome based Treatment guidelines for critical tropical infections''</center>
<hr>
''Fever with encephalopathy''
* Support ABC
* Check sugar
* If hypo, give 25% Dextrose
* If hyper start insulin drip
* IVF if dehydrated
* Antiepileptics if seizures
* A raised ICP measures if raised ICP
* CECT or MRI needed
* LP if no raised
* Do CSF studies, MP card, widal, serology for scrub typhus, leptospira, dengue, JE, Herpes
* Inj Ceftriaxone 2gm IV q12h (For possible Meningitis, typhoid, scrub typhus and Leptospirosis) + Acyclovir 10 mg/kg IV q8
''Fever with thrombocytopenia''
* PCM for fever
* IVF
* Platelet transfusion if <10K or clinical bleeding
* No steroids
* Specific therapy once diagnosis is established
''Fever with jaundice''
* PCM for fever
* In Ceftriaxone 2 gm IV q12
* Tab Doxy 100 mg BD
* IVF
* Watch for urine output, seizures, encephalopathy, bleeding
* FFP for bleeding
* Specific therapy once diagnosis is established
''Fever with renal failure''
* PCM for fever
* In Ceftriaxone 2 gm IV q12 (For possible typhoid, scrub typhus and Leptospirosis)
* Tab Doxy 100 mg BD (For possible typhoid, scrub typhus and Leptospirosis)
* IVF according to CVP
* Watch for seizures, encephalopathy, bleeding, ARDS
* Dialysis if needed
* Specific therapy once diagnosis is established
''Fever with respiratory distress:''
* PCM for fever
* IVF
* O2 by venturi mask
* Inj Ceftriaxone 2 gm IV q12h (For possible typhoid, scrub typhus and Leptospirosis)
* Inj or Tab Azithromycin 500 mg OD (For possible typhoid, scrub typhus and Leptospirosis)
* Tab Oseltamivir 150 BD if H1N1 is a possibility
* Watch for impending respiratory failure, shock, renal failure, alveolar hemorrhage
Two main form of this protozoal disease are recognised - African trypanosomiasis (sleeping sickness) and American trypanosomiasis (Chagas' disease).
Two forms of ''African trypanosomiasis'', or ''sleeping sickness'', are seen - Trypanosoma gambiense in West Africa and Trypanosoma rhodesiense in East Africa. Both types are spread by the tsetse fly. Trypanosoma rhodesiense tends to follow a more acute course. Clinical features include:
* Trypanosoma chancre - painless subcutaneous nodule at site of infection
* intermittent fever
* enlargement of posterior cervical lymph nodes
* later: central nervous system involvement e.g. somnolence, headaches, mood changes, meningoencephalitis
Management
* early disease: IV pentamidine or suramin
* later disease or central nervous system involvement: IV melarsoprol
''American trypanosomiasis'', or ''Chagas' disease'', is caused by the protozoan Trypanosoma cruzi. The vast majority of patients (95%) are asymptomatic in the acute phase although a chagoma (an erythematous nodule at site of infection) and periorbital oedema are sometimes seen. Chronic Chagas' disease mainly affects the heart and gastrointestinal tract
* myocarditis may lead to dilated cardiomyopathy (with apical atophy) and arrhythmias
* gastrointestinal features includes megaoesophagus and megacolon causing dysphagia and constipation
Management
* treatment is most effective in the acute phase using azole or nitroderivatives such as benznidazole or nifurtimox
* chronic disease management involves treating the complications e.g., heart failure
---
>CHAGA is CHANGA AMERICAN DIL
*Chagas: BIG Heart - BIG Esophagus - BIG Colon - American Trypanosomiasis
---
!!!<center>''TUBERCULAR MENINGITIS''</center>
<hr>
* ''ATT:'' initial intensive phase (4 drugs for 2 months) followed by continuation phase (usually 2 drugs for an additional 7-10 months).
* For empiric treatment of CNS tuberculosis not known or suspected to be drug resistant, the preferred intensive-phase four-drug regimen consists of isoniazid, rifampin, pyrazinamide, and ethambutol administered daily for two months.
* Once the infecting isolate is known to be sensitive to isoniazid and rifampin, ethambutol may be discontinued and a three-drug regimen may be continued for the remainder of the two-month intensive phase.
* However, ethambutol penetrates into the CNS poorly even with inflamed meninges, and some experts suggest using an alternative fourth drug, such as ethionamide or a fluoroquinolone.
* The continuation phase consists of isoniazid and rifampin and should be continued for 7 to 10 months
* In the setting of tuberculoma, an extension of the treatment duration to 18 months is warranted.
* Other antimicrobials may warrant consideration in the management of CNS tuberculosis:
* In children, for whom potential ethambutol-associated optic neuritis can be difficult to monitor, we are in agreement with the American Academy of Pediatrics, which recommends the substitution of ethionamide, or an aminoglycoside such as streptomycin, for ethambutol in the initial therapeutic regimen.
* Fluoroquinolones (levofloxacin and moxifloxacin) exhibit good CNS penetration and are bactericidal.
* The use of an intensified regimen (rifampin 15 mg/kg per day and levofloxacin 20 mg/kg per day for the first eight weeks of treatment) may be beneficial for patients with isoniazid-resistant CNS infection
* In the past, streptomycin was added to isoniazid in order to enhance sterilization and to reduce the risk of clinical relapse from resistant organisms. With the availability of rifampin and pyrazinamide, reliance upon streptomycin or other drugs of its class is generally limited to regions of the world with high prevalence of isoniazid resistance.
* ''HIV coinfection'' — The incidence of tuberculous meningitis is increased among HIV-infected patients
* For ART-naïve HIV-infected patients with CNS tuberculosis, initiation of ART should be delayed for the first eight weeks of antituberculous therapy, regardless of CD4 count
* In regions where the incidence of isoniazid-resistant infection is relatively high, or for any case where drug resistance is suspected, it is reasonable to increase the dose of rifampin (to 15 mg/kg per day) and add a fluoroquinolone (moxifloxacin or levofloxacin 20 mg/kg per day) and/or an injectable aminoglycoside to the initial standard treatment regimen. Levofloxacin achieves therapeutic CSF levels and exhibits early bactericidal activity that mirrors that of isoniazid
* There are no definitive guidelines for the duration of therapy in patients with drug-resistant CNS disease. In such cases, it may be advisable to extend the duration of therapy to 18 to 24 months, taking into account the severity of illness, rate of clinical response, and the patient's immune status.
* ''Dexamethasone''
* Children <25 kg: 8 mg/day for two weeks, then taper gradually over four to six weeks.
* Adolescents and adults >25 kg: 0.3 to 0.4 mg/kg/day for two weeks, then 0.2 mg/kg/day week 3, then 0.1 mg/kg/day week 4, then 4 mg per day and taper 1 mg off the daily dose each week; total duration approximately eight weeks.
* ''Prednisone''
* Children: 2 to 4 mg/kg per day.
* Adolescents and adults: 60 mg/day. Administer initial dose for two weeks, then taper gradually over the next six weeks (ie, reduce daily dose by 10 mg each week); total duration approximately eight weeks.
<div id="notecontent">The standard therapy for treating <b>active tuberculosis</b> is:<br><br>Initial phase - first 2 months (RIPE)<br><ul><li>Rifampicin</li><li>Isoniazid</li><li>Pyrazinamide</li><li>Ethambutol (the 2006 NICE guidelines now recommend giving a 'fourth drug' such as ethambutol routinely - previously this was only added if drug-resistant tuberculosis was suspected)</li></ul><br>Continuation phase - next 4 months<br><ul><li>Rifampicin</li><li>Isoniazid</li></ul><br>The treatment for <b>latent tuberculosis</b> is 3 months of isoniazid (with pyridoxine) and rifampicin OR 6 months of isoniazid (with pyridoxine)<br><br>Patients with <b>meningeal tuberculosis</b> are treated for a prolonged period (at least 12 months) with the addition of steroids<br><br><b>Directly observed therapy</b> with a three times a week dosing regimen may be <br>indicated in certain groups, including:<br><ul><li>homeless people with active tuberculosis</li><li>patients who are likely to have poor concordance</li><li>all prisoners with active or latent tuberculosis</li></ul></div>
<div id="body_content">
Tuberous sclerosis (TS) is a genetic condition of autosomal dominant inheritance. Like neurofibromatosis, the majority of features seen in TS are neurocutaneous.<br><br>Cutaneous features<br><ul><li><span class="concept" data-cid="7061">depigmented 'ash-leaf' spots</span> which fluoresce under UV light</li><li><span class="concept" data-cid="7062">roughened patches of skin over lumbar spine (Shagreen patches)</span></li><li><span class="concept" data-cid="7063">adenoma sebaceum</span> (angiofibromas): butterfly distribution over nose</li><li>fibromata beneath nails (<span class="concept" data-cid="7064">subungual fibromata</span>)</li><li><span class="concept" data-cid="7065">café-au-lait spots</span>* may be seen</li></ul><br>Neurological features<br><ul><li>developmental delay</li><li><span class="concept" data-cid="7066">epilepsy</span> (infantile spasms or partial)</li><li><span class="concept" data-cid="7070">intellectual impairment</span></li></ul><br>Also<br><ul><li><span class="concept" data-cid="7067">retinal hamartomas</span>: dense white areas on retina (phakomata)</li><li><span class="concept" data-cid="7067">rhabdomyomas of the heart</span></li><li>gliomatous changes can occur in the brain lesions</li><li><span class="concept" data-cid="7068">polycystic kidneys</span>, <span class="concept" data-cid="2515">renal angiomyolipomata</span></li><li>lymphangioleiomyomatosis: multiple lung cysts</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd911b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd911.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd911b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of neurofibromatosis and tuberous sclerosis. Note that whilst they are both autosomal dominant neurocutaneous disorders there is little overlap otherwise</div><br><br>*these of course are more commonly associated with neurofibromatosis. However a 1998 study of 106 children with TS found café-au-lait spots in 28% of patients</div>
<center>
<img width=300 src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/dsx090.jpg"></center>
<center>
ADENOMA SEBACEUM
</center>
<div id="notecontent">Tumour markers may be divided into:<br><ul><li>monoclonal antibodies against carbohydrate or glycoprotein tumour antigens</li><li>tumour antigens</li><li>enzymes (alkaline phosphatase, neurone specific enolase)</li><li>hormones (e.g. calcitonin, ADH)</li></ul><br>It should be noted that tumour markers usually have a low specificity<br><br><b>Monoclonal antibodies</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Tumour marker</b></th><th><b>Association</b></th></tr></thead><tbody><tr><td>CA 125</td><td><span id="concept_popover_id_7679" class="concept concept-3-u trigger-link" data-cid="7679" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7679'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating7679' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(50,255,0)'>Importance: <b>90</b></span> </div>" data-original-title="Ovarian cancer - CA 125">Ovarian cancer</span></td></tr><tr><td>CA 19-9</td><td><span class="concept" data-cid="7680">Pancreatic cancer</span></td></tr><tr><td>CA 15-3</td><td><span id="concept_popover_id_4848" class="concept concept-3-u trigger-link" data-cid="4848" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4848'>You've answered questions on this concept 2 times:<ul><li>just now: <i class='fa fa-check' style='color:green'></i></li><li>1 week ago: <i class='fa fa-check' style='color:green'></i></li></ul></div><br><div id='div_concept_rating4848' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(224,255,0)'>Importance: <b>56</b></span> </div>" data-original-title="CA 15-3 is a tumour marker in breast cancers">Breast cancer</span></td></tr></tbody></table></div><br><b>Tumour antigens</b><br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th><b>Tumour marker</b></th><th><b>Association</b></th></tr></thead><tbody><tr><td>Prostate specific antigen (PSA)</td><td>Prostatic carcinoma</td></tr><tr><td>Alpha-feto protein (AFP)</td><td><span id="concept_popover_id_7681" class="concept concept-3-u trigger-link" data-cid="7681" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7681'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating7681' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(127,255,0)'>Importance: <b>75</b></span> </div>" data-original-title="Hepatocellular carcinoma - alpha-feto protein">Hepatocellular carcinoma</span>, <span class="concept" data-cid="7682">teratoma</span></td></tr><tr><td>Carcinoembryonic antigen (CEA)</td><td><span id="concept_popover_id_1487" class="concept concept-3-u trigger-link" data-cid="1487" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative1487'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating1487' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(71,255,0)'>Importance: <b>86</b></span> </div>" data-original-title="Carcinoembryonic Antigen (CEA) is a tumour marker in colorectal cancer and has a role in monitoring disease activity">Colorectal cancer</span></td></tr><tr><td>S-100</td><td><span class="concept" data-cid="7683">Melanoma</span>, <span class="concept" data-cid="7684">schwannoma</span>s</td></tr><tr><td>Bombesin</td><td><span class="concept" data-cid="4847">Small cell lung carcinoma</span>, gastric cancer, <span class="concept" data-cid="7685">neuroblastoma</span></td></tr></tbody></table></div></div>
Tunnel vision is the concentric diminution of the visual fields
Causes
* papilloedema
* glaucoma
* retinitis pigmentosa
* choroidoretinitis
* optic atrophy secondary to tabes dorsalis
* hysteria
---
>PIG in TUNNEL - OPEN TUNNEL
*retinitis PIGmentosa - OPEN angle Glaucoma
---
In contrast, Best disease and juvenile retinoschisis are both causes of central visual loss.
---
Turner's syndrome is a chromosomal disorder affecting around 1 in 2,500 females. It is caused by either the presence of only one sex chromosome (X) or a deletion of the short arm of one of the X chromosomes. Turner's syndrome is denoted as 45,XO or 45,X.
Features
* short stature
* shield chest, widely spaced nipples
* webbed neck
* bicuspid aortic valve (15%), coarctation of the aorta (5-10%)
* primary amenorrhoea
* cystic hygroma (often diagnosed prenatally)
* high-arched palate
* short fourth metacarpal
* multiple pigmented naevi
* lymphoedema in neonates (especially feet)
* gonadotrophin levels will be elevated
* hypothyroidism is much more common in Turner's
* horseshoe kidney: the most common renal abnormality in Turner's syndrome
There is also an increased incidence of autoimmune disease (especially autoimmune thyroiditis) and Crohn's disease
>TURNED Angles
:high-arched palate - wide carrying angle - hyperconvex nails - inverted nipples
<div id="notecontent">The long-term management of type 1 diabetics is an important and complex process requiring the input of many different clinical specialties and members of the healthcare team. A diagnosis of type 1 diabetes can still reduce the life expectancy of patients by 13 years and the micro and macrovascular complications are well documented.<br><br>NICE released guidelines on the diagnosis and management of type 1 diabetes in 2015. We've only highlighted a very select amount of the guidance here which will be useful for any clinician looking after a patient with type 1 diabetes.<br><br>HbA1c<br><ul><li>should be monitored every 3-6 months</li><li>adults should have a target of HbA1c level of 48 mmol/mol (6.5%) or lower. NICE do however recommend taking into account factors such as the person's daily activities, aspirations, likelihood of complications, comorbidities, occupation and history of hypoglycaemia</li></ul><br>Self-monitoring of blood glucose<br><ul><li>recommend testing at least 4 times a day, including before each meal and before bed</li><li>more frequent monitoring is recommended if frequency of hypoglycaemic episodes increases; during periods of illness; before, during and after sport; when planning pregnancy, during pregnancy and while breastfeeding</li></ul><br>Blood glucose targets<br><ul><li>5-7 mmol/l on waking and</li><li>4-7 mmol/l before meals at other times of the day</li></ul><br>Type of insulin<br><ul><li>offer multiple daily injection basal–bolus insulin regimens, rather than twice‑daily mixed insulin regimens, as the insulin injection regimen of choice for all adults</li><li>twice‑daily insulin detemir is the regime of choice. Once-daily insulin glargine or insulin detemir is an alternative</li><li>offer rapid‑acting insulin analogues injected before meals, rather than rapid‑acting soluble human or animal insulins, for mealtime insulin replacement for adults with type 1 diabetes</li></ul><br>Metformin<br><ul><li>NICE recommend considering adding metformin if the BMI >= 25 kg/m²</li></ul></div>
<div id="notecontent">The diagnosis of type 2 diabetes mellitus can be made by either a plasma glucose or a HbA1c sample. Diagnostic criteria vary according to whether the patient is symptomatic (polyuria, polydipsia etc) or not.<br><br>If the patient is symptomatic:<br><ul><li>fasting glucose greater than or equal to <span class="concept" data-cid="790">7.0 mmol/l</span></li><li>random glucose greater than or equal to <span class="concept" data-cid="790">11.1 mmol/l</span> (or after 75g oral glucose tolerance test)</li></ul><br>If the patient is <span class="concept" data-cid="9497">asymptomatic the above criteria apply but must be demonstrated on two separate occasions.</span><br><br><br>
<center>
<img src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd521b.png">
</center>
<div class="imagetext">Diagram showing the spectrum of diabetes diagnosis<br></div><br><br>In 2011 WHO released supplementary guidance on the use of HbA1c on the diagnosis of diabetes:<br><ul><li>a HbA1c of greater than or equal to <span id="concept_popover_id_789" class="concept concept-0 trigger-link" data-cid="789" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative789'>You've never been tested on this concept</div><br><div id='div_concept_rating789' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(209,255,0)'>Importance: <b>59</b></span> </div>" data-original-title="Diabetes mellitus - HbA1c of 48 mmol/mol (6.5%) or greater is now diagnostic (WHO 2011)">48 mmol/mol</span> (6.5%) is diagnostic of diabetes mellitus</li><li>a HbAlc value of less than 48 mmol/mol (6.5%) does not exclude diabetes (i.e. it is not as sensitive as fasting samples for detecting diabetes)</li><li>in patients without symptoms, the test must be repeated to confirm the diagnosis</li><li>it should be remembered that misleading HbA1c results can be caused by increased red cell turnover (see below)</li></ul><br>Conditions where <span class="concept" data-cid="791">HbA1c may not be used for diagnosis</span>:<br><ul><li>haemoglobinopathies</li><li>haemolytic anaemia</li><li>untreated iron deficiency anaemia</li><li>suspected gestational diabetes</li><li>children</li><li>HIV</li><li>chronic kidney disease</li><li>people taking medication that may cause hyperglycaemia (for example corticosteroids)</li></ul><br><b>Impaired fasting glucose and impaired glucose tolerance</b><br><br>A fasting glucose greater than or equal to 6.1 but less than 7.0 mmol/l implies impaired fasting glucose (IFG)<br><br>Impaired glucose tolerance (IGT) is defined as fasting plasma glucose less than 7.0 mmol/l and OGTT 2-hour value greater than or equal to 7.8 mmol/l but less than 11.1 mmol/l<br><br>Diabetes UK suggests:<br><ul><li>'People with IFG should then be offered an oral glucose tolerance test to rule out a diagnosis of diabetes. A result below 11.1 mmol/l but above 7.8 mmol/l indicates that the person doesn't have diabetes but does have IGT.'</li></ul></div>
<div id="body_content">
NICE updated its guidance on the management of type 2 diabetes mellitus (T2DM) in 2015. Key points are listed below:<br><ul><li>HbA1c targets have changed. They are now dependent on what antidiabetic drugs a patient is receiving and other factors such as frailty</li><li>there is more flexibility in the second stage of treating patients (i.e. after metformin has been started) - you now have a choice of 4 oral antidiabetic agents</li></ul><br><br><div class="alert alert-warning">It's worthwhile thinking of the average patient who is taking metformin for T2DM, you can titrate up metformin and encourage lifestyle changes to aim for a HbA1c of <span class="concept" data-cid="9108">48 mmol/mol</span> (6.5%), but should only add a second drug if the HbA1c rises to <span class="concept" data-cid="9109">58 mmol/mol</span> (7.5%)<br></div><br><br>Dietary advice<br><ul><li>encourage high fibre, low glycaemic index sources of carbohydrates</li><li>include low-fat dairy products and oily fish</li><li>control the intake of foods containing saturated fats and trans fatty acids</li><li>limited substitution of sucrose-containing foods for other carbohydrates is allowable, but care should be taken to avoid excess energy intake</li><li>discourage use of foods marketed specifically at people with diabetes</li><li>initial target weight loss in an overweight person is 5-10%</li></ul><br><br><b>HbA1c targets</b><br><br>This is area which has changed in 2015<br><ul><li>individual targets should be agreed with patients to encourage motivation</li><li>HbA1c should be checked every 3-6 months until stable, then 6 monthly</li><li>NICE encourage us to consider relaxing targets on <i>'a case-by-case basis, with particular consideration for people who are older or frail, for adults with type 2 diabetes'</i></li><li>in 2015 the guidelines changed so HbA1c targets are now dependent on treatment:</li></ul><br>Lifestyle or single drug treatment<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Management of T2DM</th><th>HbA1c target</th></tr></thead><tbody><tr><td>Lifestyle</td><td><span class="concept" data-cid="9108">48 mmol/mol</span> (6.5%)</td></tr><tr><td>Lifestyle + metformin</td><td><span class="concept" data-cid="9108">48 mmol/mol</span> (6.5%)</td></tr><tr><td>Includes any drug which may cause hypoglycaemia (e.g. lifestyle + sulfonylurea)</td><td>53 mmol/mol (7.0%)</td></tr></tbody></table></div><br>Practical examples<br><ul><li>a patient is newly diagnosed with HbA1c and wants to try lifestyle treatment first. You agree a target of 48 mmol/mol (6.5%)</li><li>you review a patient 6 months after starting metformin. His HbA1c is 51 mmol/mol (6.8%). You increase his metformin from 500mg bd to 500mg tds and reinforce lifestyle factors</li></ul><br>Patient already on treatment<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid2"><thead><tr><th>Management of T2DM</th><th>HbA1c target</th></tr></thead><tbody><tr><td>Already on one drug, but HbA1c has risen to <span class="concept" data-cid="9109">58 mmol/mol</span> (7.5%)</td><td>53 mmol/mol (7.0%)</td></tr></tbody></table></div><br><br><b>Drug treatment</b><br><br>The 2015 NICE guidelines introduced some changes into the management of type 2 diabetes. There are essentially two pathways, one for patients who can tolerate metformin, and one for those who can't:
<center>
<img width=800 src="https://www.dropbox.com/s/o5jf01dgzehu527/t2dm1.png?raw=1">
</center>
<b>Tolerates metformin:</b><br><ul><li><span class="concept" data-cid="9107">metformin is still first-line</span> and should be offered if the HbA1c rises to <span class="concept" data-cid="9109">48 mmol/mol</span> (6.5%)* on lifestyle interventions</li><li>if the HbA1c has risen to 58 mmol/mol (7.5%) then a second drug should be added from the following list:<ul><li>sulfonylurea</li><li>gliptin</li><li>pioglitazone</li><li>SGLT-2 inhibitor</li></ul></li><li>if despite this the HbA1c rises to, or remains above <span class="concept" data-cid="9109">58 mmol/mol</span> (7.5%) then triple therapy with one of the following combinations should be offered:<ul><li>metformin + gliptin + sulfonylurea</li><li>metformin + pioglitazone + sulfonylurea</li><li>metformin + sulfonylurea + SGLT-2 inhibitor</li><li>metformin + pioglitazone + SGLT-2 inhibitor</li><li>OR insulin therapy should be considered</li></ul></li></ul><br>Criteria for glucagon-like peptide1 (GLP1) mimetic (e.g. exenatide)<br><ul><li>if triple therapy is not effective, not tolerated or contraindicated then NICE advise that we consider combination therapy with metformin, a sulfonylurea and a glucagonlike peptide1 (GLP1) mimetic if:<ul><li>BMI >= 35 kg/m² and specific psychological or other medical problems associated with obesity or</li><li>BMI < 35 kg/m² and for whom insulin therapy would have significant occupational implications or</li></ul></li></ul>weight loss would benefit other significant obesityrelated comorbidities<br><ul><li>only continue if there is a reduction of at least 11 mmol/mol [1.0%] in HbA1c and a weight loss of at least 3% of initial body weight in 6 months</li></ul><br>Practical examples<br><ul><li>you review an established type 2 diabetic on maximum dose metformin. Her HbA1c is 55 mmol/mol (7.2%). You do not add another drug as she has not reached the threshold of 58 mmol/mol (7.5%)</li><li>a type 2 diabetic is found to have a HbA1c of 62 mmol/mol (7.8%) at annual review. They are currently on maximum dose metformin. You elect to add a sulfonylurea</li></ul><br><b>Cannot tolerate metformin or contraindicated</b><br><ul><li>if the HbA1c rises to 48 mmol/mol (6.5%)* on lifestyle interventions, consider one of the following:<ul><li>sulfonylurea</li><li>gliptin</li><li>pioglitazone</li></ul></li><li>if the HbA1c has risen to 58 mmol/mol (7.5%) then a one of the following combinations should be used:<ul><li>gliptin + pioglitazone</li><li>gliptin + sulfonylurea</li><li>pioglitazone + sulfonylurea</li></ul></li><li>if despite this the HbA1c rises to, or remains above 58 mmol/mol (7.5%) then consider insulin therapy</li></ul><br>Starting insulin<br><ul><li>metformin should be continued. In terms of other drugs NICE advice: <i>'Review the continued need for other blood glucose lowering therapies'</i></li><li>NICE recommend starting with human NPH insulin (isophane, intermediate acting) taken at bed-time or twice daily according to need</li></ul><br><br><b>Risk factor modification</b><br><br>Hypertension<br><ul><li><span class="concept" data-cid="399"><b>blood pressure targets are the same as for patients without type 2 diabetes</b> (see table below)</span></li><li>ACE inhibitors are first-line</li></ul><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid3"><thead><tr><th></th><th><b>Clinic BP</b></th><th><b>ABPM / HBPM</b></th></tr></thead><tbody><tr><td><b>Age < 80 years</b></td><td>140/90 mmHg</td><td>135/85 mmHg</td></tr><tr><td><b>Age > 80 years</b></td><td>150/90 mmHg</td><td>145/85 mmHg</td></tr></tbody></table></div><br>Antiplatelets<br><ul><li>should not be offered unless a patient has existing cardiovascular disease</li></ul><br>Lipids<br><ul><li>following the 2014 NICE lipid modification guidelines only patients with a 10-year cardiovascular risk > 10% (using QRISK2) should be offered a statin. The first-line statin of choice is atorvastatin 20mg on</li></ul><br>
<center>
<img width=500 src="https://www.dropbox.com/s/qv76jfqa4020xz5/t2dm2.png?raw=1">
</center>
<div class="imagetext">Graphic showing choice of statin.</div><br>*this is a bit confusing because isn't the diagnostic criteria for T2DM HbA1c 48 mmol/mol (6.5%)? So shouldn't all patients be offered metformin at diagnosis? Our interpretation of this is that some patients upon diagnosis will elect to try lifestyle measures, which may reduce their HbA1c below this level. If it then rises to the diagnostic threshold again metformin should be offered</div>
| !ULCERATIVE COLITIS DRUGS |<|
|Balsalazide|Tab Cozabal 750 mg, 2.25 g (three 750 mg capsules) 3 times/day for 8 weeks|
|Mesalamine|Tab Asacol 400 mg TDS, 2 wks|
|Sulfasalazine|Tab Sazo 500 mg TDS, 2 wks|
|Prednisolone|Tab Wysolone 10 mg BD, 7 days|
<div id="notecontent">Ulcerative colitis (UC) is a form of inflammatory bowel disease. Inflammation always starts at rectum (hence it is the <span class="concept" data-cid="842">most common site for UC</span>), never spreads beyond ileocaecal valve and is continuous. The peak incidence of ulcerative colitis is in people aged 15-25 years and in those aged 55-65 years.<br><br>The initial presentation is usually following insidious and intermittent symptoms. Features include:<br><ul><li><span id="concept_popover_id_6196" class="concept concept-3-u trigger-link" data-cid="6196" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6196'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating6196' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(183,255,0)'>Importance: <b>64</b></span> </div>" data-original-title="Ulcerative colitis - bloody diarrhoea">bloody diarrhoea</span></li><li>urgency</li><li><span class="concept" data-cid="6197">tenesmus</span></li><li>abdominal pain, particularly in the left lower quadrant</li><li>extra-intestinal features (see below)</li></ul><br>Questions regarding the 'extra-intestinal' features of inflammatory bowel disease are common:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th></th><th><b>Common to both Crohn's disease (CD) and Ulcerative colitis (UC)</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><b>Related to disease activity</b></td><td>Arthritis: pauciarticular, asymmetric<br> Erythema nodosum<br> EpiScleritis<br> Osteoporosis</td><td>Arthritis is the most common extra-intestinal feature in both CD and UC<br> EpiScleritis is more common in CD</td></tr><tr><td><b>Unrelated to disease activity</b></td><td>Arthritis: polyarticular, symmetric<br> Uveitis<br> Pyoderma gangrenosum<br> Clubbing<br> Primary sclerosing cholangitis</td><td>Primary sclerosing cholangitis is much more common in UC<br> Uveitis is more common in UC</td></tr></tbody></table></div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd910b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd910.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd910b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Venn diagram showing shared features and differences between ulcerative colitis and Crohn's disease. Note that whilst some features are present in both, some are much more common in one of the conditions, for example colorectal cancer in ulcerative colitis</div><br>Pathology<br><ul><li>red, raw mucosa, bleeds easily</li><li><span id="concept_popover_id_6199" class="concept concept-1 trigger-link" data-cid="6199" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6199'>You've been tested on this concept once, 2 weeks ago, and got the associated question incorrect.</div><br><div id='div_concept_rating6199' class='text-right' style ='font-size:90%;'>You've rated this <span style='color:green'>important</span> <br><span style = 'border-bottom: 5px solid rgb(101,255,0)'>Importance: <b>80</b></span> </div>" data-original-title="Ulcerative colitis - no inflammation beyond submucosa">no inflammation beyond submucosa</span> (unless fulminant disease)</li><li>widespread ulceration with preservation of adjacent mucosa which has the appearance of polyps (<span class="concept" data-cid="6202">'pseudopolyps'</span>)</li><li>inflammatory cell infiltrate in lamina propria</li><li>neutrophils migrate through the walls of glands to form <span id="concept_popover_id_6200" class="concept concept-3-u trigger-link" data-cid="6200" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6200'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating6200' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(193,255,0)'>Importance: <b>62</b></span> </div>" data-original-title="Ulcerative colitis - crypt abscesses">crypt abscesses</span></li><li><span id="concept_popover_id_6201" class="concept concept-1 trigger-link" data-cid="6201" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative6201'>You've been tested on this concept once, 2 weeks ago, and got the associated question incorrect.</div><br><div id='div_concept_rating6201' class='text-right' style ='font-size:90%;'>You've rated this <span style='color:green'>important</span> <br><span style = 'border-bottom: 5px solid rgb(203,255,0)'>Importance: <b>60</b></span> </div>" data-original-title="Ulcerative colitis - depletion of goblet cells">depletion of goblet cells</span> and mucin from gland epithelium</li><li>granulomas are infrequent</li></ul><br>Barium enema<br><ul><li><span class="concept" data-cid="6203">loss of haustrations</span></li><li>superficial ulceration, <span class="concept" data-cid="6202">'pseudopolyps'</span></li><li>long standing disease: <span class="concept" data-cid="4193">colon is narrow and short -'drainpipe colon'</span></li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb169b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb169.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb169b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Abdominal x-ray from a patient with ulcerative colitis showing lead pipe appearance of the colon (red arrows). Ankylosis of the left sacroiliac joint and partial ankylosis on the right (yellow arrow), reinforcing the link with sacroilitis.</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb170b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb170.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb170b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Barium enema from a patient with ulcerative colitis. The whole colon, without skips is affected by an irregular mucosa with loss of normal haustral markings.</div></div>
---
!!Management
{{UlcerativeColitisMx}}
<div id="notecontent">Treatment can be divided into inducing and maintaining remission. NICE updated their guidelines on the management of ulcerative colitis in 2019.<br><br>The severity of UC is usually classified as being mild, moderate or severe:<br><ul><li>mild: < 4 stools/day, only a small amount of blood</li><li>moderate: 4-6 stools/day, varying amounts of blood, no systemic upset</li><li>severe: >6 bloody stools per day + features of systemic upset (pyrexia, tachycardia, anaemia, raised inflammatory markers)</li></ul><br><b>Inducing remission</b><br><br>Treating mild-to-moderate ulcerative colitis<br><ul><li>proctitis<ul><li><span id="concept_popover_id_9853" class="concept concept-0 trigger-link" data-cid="9853" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9853'>You've never been tested on this concept</div><br><div id='div_concept_rating9853' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(198,255,0)'>Importance: <b>61</b></span> </div>" data-original-title="In a mild-moderate flare of distal ulcerative colitis, the first-line treatment is topical (rectal) aminosalicylates">topical (rectal) aminosalicylate</span>: for distal colitis rectal mesalazine has been shown to be superior to rectal steroids and oral aminosalicylates</li><li>if remission is not achieved within <span class="concept" data-cid="9852">4 weeks</span>, <span class="concept" data-cid="9854">add an oral aminosalicylate</span></li><li>if remission still not achieved add topical or <span id="concept_popover_id_9857" class="concept concept-0 trigger-link" data-cid="9857" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9857'>You've never been tested on this concept</div><br><div id='div_concept_rating9857' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(66,255,0)'>Importance: <b>87</b></span> </div>" data-original-title="If a mild-moderate flare of ulcerative colitis does not respond to topical or oral aminosalicylates then oral corticosteroids are added">oral corticosteroid</span></li></ul></li><li>proctosigmoiditis and left-sided ulcerative colitis<ul><li><span id="concept_popover_id_9853" class="concept concept-0 trigger-link" data-cid="9853" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9853'>You've never been tested on this concept</div><br><div id='div_concept_rating9853' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(198,255,0)'>Importance: <b>61</b></span> </div>" data-original-title="In a mild-moderate flare of distal ulcerative colitis, the first-line treatment is topical (rectal) aminosalicylates">topical (rectal) aminosalicylate</span></li><li>if remission is not achieved within 4 weeks, <span class="concept" data-cid="9854">add a high-dose oral aminosalicylate</span> OR switch to a high-dose oral aminosalicylate and a topical corticosteroid</li><li>if remission still not achieved stop topical treatments and offer an oral aminosalicylate and <span id="concept_popover_id_9857" class="concept concept-0 trigger-link" data-cid="9857" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9857'>You've never been tested on this concept</div><br><div id='div_concept_rating9857' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(66,255,0)'>Importance: <b>87</b></span> </div>" data-original-title="If a mild-moderate flare of ulcerative colitis does not respond to topical or oral aminosalicylates then oral corticosteroids are added">an oral corticosteroid</span></li></ul></li><li>extensive disease<ul><li><span id="concept_popover_id_9855" class="concept concept-1 trigger-link" data-cid="9855" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9855'>You've been tested on this concept once, just now, and got the associated question incorrect.</div><br><div id='div_concept_rating9855' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(229,255,0)'>Importance: <b>55</b></span> </div>" data-original-title="In a mild-moderate flare of ulcerative colitis extending past the left-sided colon, oral aminosalicylates should be added to rectal aminosalicylates, as enemas only reach so far">topical (rectal) aminosalicylate and a high-dose oral aminosalicylate</span>: </li><li>if remission is not achieved within 4 weeks, stop topical treatments and offer a high-dose oral aminosalicylate and an <span id="concept_popover_id_9857" class="concept concept-0 trigger-link" data-cid="9857" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9857'>You've never been tested on this concept</div><br><div id='div_concept_rating9857' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(66,255,0)'>Importance: <b>87</b></span> </div>" data-original-title="If a mild-moderate flare of ulcerative colitis does not respond to topical or oral aminosalicylates then oral corticosteroids are added">oral corticosteroid</span></li></ul></li></ul><br>Severe colitis <br><ul><li><span id="concept_popover_id_9856" class="concept concept-0 trigger-link" data-cid="9856" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9856'>You've never been tested on this concept</div><br><div id='div_concept_rating9856' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="A severe flare of ulcerative colitis should be treated in hospital with IV corticosteroids">should be treated in hospital</span></li><li><span id="concept_popover_id_9856" class="concept concept-0 trigger-link" data-cid="9856" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9856'>You've never been tested on this concept</div><br><div id='div_concept_rating9856' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(40,255,0)'>Importance: <b>92</b></span> </div>" data-original-title="A severe flare of ulcerative colitis should be treated in hospital with IV corticosteroids">intravenous steroids are usually given first-line</span><ul><li>intravenous ciclosporin may be used if steroid are contraindicated</li></ul></li><li>if after 72 hours there has been no improvement, consider adding intravenous ciclosporin to intravenous corticosteroids or consider surgery</li></ul><br><br><b>Maintaining remission</b><br><br>Following a mild-to-moderate ulcerative colitis flare<br><ul><li>proctitis and proctosigmoiditis<ul><li>topical (rectal) aminosalicylate alone (daily or intermittent) or</li><li>an oral aminosalicylate plus a topical (rectal) aminosalicylate (daily or intermittent) or</li><li>an oral aminosalicylate by itself: this may not be effective as the other two options</li></ul></li><li>left-sided and extensive ulcerative colitis<ul><li>low maintenance dose of an oral aminosalicylate</li></ul></li></ul><br>Following a severe relapse or >=2 exacerbations in the past year<br><ul><li><span class="concept" data-cid="9858">oral azathioprine or oral mercaptopurine</span></li></ul><br><br>Other points<br><ul><li>methotrexate is not recommended for the management of UC (in contrast to Crohn's disease)</li><li>there is some evidence that probiotics may prevent relapse in patients with mild to moderate disease</li></ul></div>
!!!<center>''UNCOMPLICATED GONOCOCCAL URETHRITIS, CERVITIS, PROCTITIS''</center>
<hr>
* Ceftriaxone 250 mg IM once + Azithro 1 gm/Doxy 100 BD 7d
!!!<center>''ACUTE MENTAL STATUS CHANGE PROTOCOL / UNCONSCIOUS PATIENT PROTOCOL''</center>
<hr>
* Check ABC
* If apneic or gasping: airway management (O2 inh, Intubation)
* Check pulses, if no carotid start Resuscitation
* First check RBS; if <70 give 25% D 100 ml IV STAT; Give also Thiamine 100 mg IV STAT; check for response.
* If RBS>250, then check for ketones and get ABG; if in DKA start DKA protocol
* If RBS>600 or Hi start HHS protocol
* Get a set of vitals, GCS
* If SBP<90 the NS bolus an reassess. Start Shock protocol
* Check ECG: If Arrhythmia start arrhythmia protocol
* If ACS/STEMI then start STEMI protocol, get Trop-T
* Low sats: Give O2, if not improving admit to ICU
* If gasping or RR<8 ambu the Pt and prepare for intubation.
* Get CXR and ABG STAT
* If Respiratory acidosis and Co2 retention then start COPD protocol after intubation
* If metabolic acidosis the give bolus and give Sod bicarb if pH<7.0 and Bicarb <10
* Looks Pale and anaemic: Arrange for blood
* If Trauma the immobilize C-spine
* Abnormal neuro exam, unequal pupils or FAST exam +ve then get NCCT head STAT
* If Intracranial bleed start stroke protocol
* If H/O head injury then get a NCCT head
* Keep NPO
* Check Vitals q1h
* Cardiac monitor
* Send for CBC, KFT, LFT
* If Na <120 then start Inj 3% NS 100 ml IV STAT and then at 10-15 ml/hr;then check Na q6h
* If any electrolyte abnormalities then start protocol.
* If alcoholic or CLD patient with jaundice then get LFT, PT/INR and start Hepatic encephalopathy protocol
* If SBP>180 then rule out stroke and start Inj NTG @ 0.6ml/hr to titrate for high BP or Inj Labetalol drip
* If CKD Pt and Pt missed dialysis check KFT and arrange for dialysis
* If with fever, neck stiffness or seizures start meningitis protocol, do LP
* If high grade fever R/o Malaria, Typhoid, Pneumonia and UTI
* If MP card +ve then give IV Artesunate
* If sepsis Start IV Abx
* Inj Pip-taz 4.5 IV q8h
* Inj Mero 1 gm IV q8h
* Inj Amika 500 IV q12h
* If seizures start Seizure protocol
* If Poisoning start Poisoning protocol
* If H/O CHF or DCMP then start Cardiogenic shock protocol
* Start COPD/Asthma protocol
* Start MI protocol
* If H/O diarrhea, vomiting then IV fluid boluses and hypovolemic shock protocol.
* If blood loss give Fluids and blood, stop the bleeding.
* If no clue,attempted suicide or poisoning
* If edema, mostly Cardiac/Renal/Liver Failure
* Unequal pupils: Brain herniation
* Pinpoint pupils: Pontine hemorrhage, Narcotic/ opioid poisoning
* Fixed and dilated: Severe anoxia, brain death
* ''COMMON CAUSES''
* Hypoglycaemia (H/O DM)
* Diabetic ketoacidosis(H/O DM)
* Nonketotic hyperosmolar state (H/O DM)
* Hyponatremia
* Hepatic encephalopathy
* Hypertensive encephalopathy
* Uremic encephalopathy
* Hypercapnia
* Hypothyroidism
* Hypothermia
* Hyperthermia/Heat stroke
* Febrile and Unconsciousness: Meningitis Septicaemia, cerebral malaria
* If afebrile and unconscious:
* FNDs, hemiparesis, plantar extensor: Stroke/SOL
* Raised ICP-headache, vomiting, blurred vision, convulsions: ICSOL
* Chronic SDH: H/O head injury
* Dehydration with electrolyte imbalance (Vomiting/diarrhea)
* Shock (blood loss)
* Malaria/Typhoid/Pneumonia (high grade fever)
* Ass with convulsion: Seizure protocol
* Neck stiffness with or without preceding h/o headache, vomiting: SAH
* Evidence of poison, drug, smell: Poisoning protocol
* Metabolic disturbances:
* Uremic encephalopathy if acidotic breathing, low UOP, and H/O CKD
* Alcoholism
* Drug addiction
* Depression: attempted suicide
* Cardiogenic shock
* Hepatic encephalopathy if H/O CLD, jaundice and other stigmata of CLD
* Hyponatremia if H/O Vomiting, diarrhea, H/O diuretics
* COPD/Asthma (Inc pcO2, hypoxia)
* Ac MI/Embolic stroke (H/O IHD, CAD)
There are a wide variety of psychiatric terms for patients who have symptoms for which no organic cause can be found:
;Somatisation disorder
* multiple physical `SYMPTOMS` present for at least 2 years
* patient refuses to accept reassurance or negative test results
;Hypochondrial disorder
* persistent belief in the presence of an underlying serious `DISEASE`, e.g. cancer
* patient again refuses to accept reassurance or negative test results
;Conversion disorder
* typically involves loss of motor or sensory function
* the patient doesn't consciously ''F''eign the symptoms (''F''actitious disorder) or seek ''M''aterial gain (''M''alingering)
* patients may be indifferent to their apparent disorder - la belle indifference - although this has not been backed up by some studies
;Dissociative disorder
* dissociation is a process of 'separating off' certain memories from normal consciousness
* in contrast to conversion disorder involves psychiatric symptoms e.g. Amnesia, fugue, stupor
* dissociative identity disorder (DID) is the new term for multiple personality disorder as is the most severe form of dissociative disorder
;Factitious disorder
* also known as Munchausen's syndrome
* the intentional production of physical or psychological symptoms
;Malingering
* fraudulent simulation or exaggeration of symptoms with the intention of financial or other gain
---
>Somatization = Symptoms
>hypoChondria = Cancer
---
>Intentionally Feign Munchese Facts - Factitious
>Material gain - Malingering
!!!<center>''UPPER GI BLEED PROTOCOL''</center>
<hr>
* Obtain type and crossmatch for hemodynamic instability, severe bleeding, or high-risk patient)
* CBC, KFT, LFT, PT/INR, ECG in heart Pts, USG abd, CECT Abd if needed
* Nil orally
* Head elevation 30 deg
* Oxygen sos
* Fluid resuscitation Inj NS 500 ml bolus and then 100 ml/hr
* Ryles tube: blood or coffee-ground like material confirms the diagnosis.
* Inj Cefaxone 1 gm IV OD
* Inj Metrogyl 500 mg IV q8h
* Inj Vit K 5 mg sc daily 5 days
* Inj Perinorm 10 mg/Vomikind 4 mg IV sos q6h
* Initiate appropriate resuscitation (ABC)
* Blood transfusions if Hb ≤7 or <9 in high-risk patients (eg, elderly, CAD)
* Early endoscopy (within 24 hours of presentation)
* Unstable patients: endoscopy immediately after resuscitation.
* Unstable patients with suspected non-variceal acute UGIB: Call the Surgeon
* Platelet transfusion if actively bleeding and platelet count < 50,000
* FFP if PT (INR) or APTT of > 1.5 times normal
* Suspected variceal blood loss:
* Inj Terlipressin 2 mg q4h, OR 2 mg STAT then 1 mg q4h if wt <50 kg;
* If not available then Inj OCTRIDE IV 50 mcg bolus followed by continuous I.V. infusion of 25-50 mcg/hour for 2-5 days; may repeat bolus in first hour if hemorrhage not controlled
* Heart patient, use Octreotide
* Non-variceal UGIB: endoscopic therapy
* Inj Omeprazole/pantoprazole drip 80 mg IV STAT then 8 mg/hr IV CONTINUOUS (Add 5 amp 40X5=200 mg in 500 cc NS, give at 20 cc/hr OR 6 dps/min OR 20 mic dps/min) for 72 hrs
* Notify Doctor if: if stool for occult blood is positive; if INR > 2; Sats < 90%; Change in mental status; SBP <90 OR >170; Chest pain; Hb < 7.0 or more than 1 grams from last recorded value; UOP< 30 ml/hr
* Elevate head of bed 30 degrees with Ryles tube insertion to gravity
* PCM 650 mg PO every 4 hr sos mild pain (not to exceed 4 grams per 24 hrs)
* PCM 650 mg PO every 4 hr sos temp more than 101F (not to exceed 4 grams per 24 hrs)
* Syr Cremaffin 30 ml PO sos constipation
* Syr Gelusil MPS 30 ml PO sos heartburn
<div id="notecontent"><b>Colles' fracture</b><br><ul><li>Fall onto extended outstretched hands</li><li>Described as a dinner fork type deformity</li><li>Classical Colles' fractures have the following 3 features:</li></ul><br><i>Features of the injury</i><br>1. Transverse fracture of the radius <br>2. 1 inch proximal to the radio-carpal joint <br>3. Dorsal displacement and angulation<br><br><b>Smith's fracture (reverse Colles' fracture)</b><br><ul><li>Volar angulation of distal radius fragment (Garden spade deformity)</li><li>Caused by falling backwards onto the palm of an outstretched hand or falling with wrists flexed</li></ul><br><b>Bennett's fracture</b><br><ul><li>Intra-articular fracture of the first carpometacarpal joint</li><li>Impact on flexed metacarpal, caused by fist fights</li><li>X-ray: triangular fragment at ulnar base of metacarpal</li></ul><br><b>Monteggia's fracture</b><br><ul><li>Dislocation of the proximal radioulnar joint in association with an ulna fracture</li><li>Fall on outstretched hand with forced pronation</li><li>Needs prompt diagnosis to avoid disability</li></ul><br><b>Galeazzi fracture</b><br><ul><li>Radial shaft fracture with associated dislocation of the distal radioulnar joint</li><li>Occur after a fall on the hand with a rotational force superimposed on it. </li><li>On examination, there is bruising, swelling and tenderness over the lower end of the forearm. </li><li>X Rays reveal the displaced fracture of the radius and a prominent ulnar head due to dislocation of the inferior radio-ulnar joint.</li></ul><br><b>Barton's fracture</b><br><ul><li>Distal radius fracture (Colles'/Smith's) with associated radiocarpal dislocation</li><li>Fall onto extended and pronated wrist</li></ul><br><b>Scaphoid fractures</b><br><ul><li>Scaphoid fractures are the commonest carpal fractures.</li><li>Surface of scaphoid is covered by articular cartilage with small area available for blood vessels (fracture risks blood supply)</li><li>Forms floor of anatomical snuffbox</li><li>Risk of fracture associated with fall onto outstretched hand (tubercle, waist, or proximal 1/3)</li><li>The main physical signs are swelling and tenderness in the anatomical snuff box, and pain on wrist movements and on longitudinal compression of the thumb.</li><li>Ulnar deviation AP needed for visualization of scaphoid </li><li>Immobilization of scaphoid fractures difficult</li></ul><br><b>Radial head fracture</b><br><ul><li>Fracture of the radial head is common in young adults. </li><li>It is usually caused by a fall on the outstretched hand. </li><li>On examination, there is marked local tenderness over the head of the radius, impaired movements at the elbow, and a sharp pain at the lateral side of the elbow at the extremes of rotation (pronation and supination).</li></ul></div>
<div id="body_content">
The information below contains selected facts which commonly appear in examinations:<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Nerve</b></th><th><b>Motor</b></th><th><b>Sensory</b></th><th><b>Typical mechanism of injury & notes</b></th></tr></thead><tbody><tr><td>Musculocutaneous nerve (C5-C7)</td><td>Elbow flexion (supplies <span class="concept" data-cid="7176">biceps brachii</span>) and supination</td><td>Lateral part of the forearm</td><td>Isolated injury rare - usually injured as part of brachial plexus injury</td></tr><tr><td>Axillary nerve (C5,C6)</td><td><span class="concept" data-cid="429">Shoulder abduction</span> (<span class="concept" data-cid="8246">deltoid muscle</span>)</td><td><span class="concept" data-cid="8234">Inferior region of the deltoid muscle</span></td><td><span class="concept" data-cid="7169">Humeral neck fracture/dislocation</span><br><br>Results in flattened deltoid</td></tr><tr><td>Radial nerve (C5-C8)</td><td><span class="concept" data-cid="2060">Extension (forearm, wrist, fingers, thumb)</span></td><td>Small area between the dorsal aspect of the 1st and 2nd metacarpals</td><td><span class="concept" data-cid="7170">Humeral midshaft fracture</span><br><br>Palsy results in <span class="concept" data-cid="7184">wrist drop</span></td></tr><tr><td>Median nerve (C6, C8, T1)</td><td>LOAF* muscles<br><br>Features depend on the site of the lesion:<br><ul><li>wrist: paralysis of thenar muscles, opponens pollicis </li><li>elbow: loss of pronation of forearm and weak wrist flexion</li></ul></td><td>Palmar aspect of lateral 3½ fingers</td><td>Wrist lesion → <span class="concept" data-cid="7171">carpal tunnel syndrome</span></td></tr><tr><td>Ulnar nerve (C8, T1)</td><td>Intrinsic hand muscles except LOAF*<br><br>Wrist flexion</td><td>Medial 1½ fingers</td><td><span class="concept" data-cid="7172">Medial epicondyle fracture</span><br><br>Damage may result in a 'claw hand'</td></tr><tr><td>Long thoracic nerve (C5-C7)</td><td><span class="concept" data-cid="7183">Serratus anterior</span></td><td></td><td>Often during sport e.g. following a blow to the ribs. Also possible complication of mastectomy<br><br>Damage results in a <span class="concept" data-cid="7173">winged scapula</span></td></tr></tbody></table></div><br><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd025b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd025.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd025b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Diagram of the brachial plexus</div><br><br>Erb-Duchenne palsy ('waiter's tip')<br><ul><li>due to damage of the upper trunk of the brachial plexus (C5,C6)</li><li><span class="concept" data-cid="7174">may be secondary to shoulder dystocia during birth</span></li><li>the arm hangs by the side and is internally rotated, elbow extended</li></ul><br>Klumpke injury<br><ul><li>due to damage of the lower trunk of the brachial plexus (C8, T1)</li><li>as above, may be secondary to shoulder dystocia during birth. Also may be caused by a <span class="concept" data-cid="7175">sudden upward jerk of the hand</span></li><li>associated with Horner's syndrome</li></ul><br>*LOAF muscles<br><ul><li>Lateral two lumbricals</li><li>Opponens pollis</li><li><span class="concept" data-cid="7180">Abductor pollis brevis</span></li><li>Flexor pollis brevis</li></ul></div>
---
<center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb052b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb052.png"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Radial nerve" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb052b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">The cutaneous sensation of the upper limb- illustrating the contribution of the radial nerve</div>
!!Urinary incontinence (UI)
is a common problem, affecting around 4-5% of the population. It is more common in elderly females.
!!!Risk factors
* advancing age
* previous pregnancy and childbirth
* high body mass index
* hysterectomy
* family history
!!!Classification
* overactive bladder (OAB)/urge incontinence: due to detrusor overactivity
* stress incontinence: leaking small amounts when coughing or laughing
* mixed incontinence: both urge and stress
* overflow incontinence: due to bladder outlet obstruction, e.g. due to prostate enlargement
!!!Initial investigation
* bladder diaries should be completed for a minimum of 3 days
* vaginal examination to exclude pelvic organ prolapse and ability to initiate voluntary contraction of pelvic floor muscles ('Kegel' exercises)
* urine dipstick and culture
* urodynamic studies
;Management depends on whether urge or stress UI is the predominant picture.
!!!If urge incontinence is predominant:
* bladder retraining (lasts for a minimum of 6 weeks, the idea is to gradually increase the intervals between voiding)
* bladder stabilising drugs: antimuscarinics are first-line.
* NICE recommend oxybutynin (immediate release), tolterodine (immediate release) or darifenacin (once daily preparation). Immediate release oxybutynin should, however, be avoided in 'frail older women'
>ELDERLY lady MIRA
* `mirabegron` (a beta-3 agonist) may be useful if there is concern about anticholinergic side-effects `in frail elderly patients`
!!!If stress incontinence is predominant:
* pelvic floor muscle training: NICE recommend at least 8 contractions performed 3 times per day for a minimum of 3 months
* surgical procedures: e.g. retropubic mid-urethral tape procedures
<div id="body_content">
The following drugs may cause urinary retention:<br><ul><li>tricyclic antidepressants</li><li>anticholinergics</li><li>opioids</li><li>NSAIDs</li><li>disopyramide</li></ul></div>
!!!<center>''UROSEPSIS''</center>
<hr>
* Ceftriaxone 1 g IV Q24H OR Levoflox 500 IV q24h 7ds OR Pip 4.5 Q8H IV; PO - Levoflox 750/Moxiflox 400 OD 1-2 wks OR TMP/SMX 1 SS tab BD 2 wks
!!!<center>''Urinary Tract Infection''</center>
<hr>
* Bactrim DS BD 3 ds OR Cefpodoxime 100 BD 5d OR Levoflox 500 PO OD 3ds OR Nitrofurantoin 100 BD for 5 ds
<div id="notecontent"><b>Lower urinary tract infections</b><br><br>Non-pregnant women<br><ul><li>local antibiotic guidelines should be followed if available</li><li>CKS/2012 SIGN guidelines recommend <span class="concept" data-cid="6116">trimethoprim or nitrofurantoin</span> for 3 days</li><li>send a urine culture if:<ul><li><span class="concept" data-cid="10467">aged > 65 years</span></li><li><span class="concept" data-cid="5063">visible or non-visible haematuria</span></li></ul></li></ul><br>Pregnant women <br><ul><li>if the pregnant woman is symptomatic: <ul><li>a urine culture should be sent in all cases</li><li>should be treated with an antibiotic for <concept108777 days<="" span=""></concept108777></li><li><span class="concept" data-cid="10876">first-line: nitrofurantoin</span> (<span class="concept" data-cid="5061">should be avoided near term</span>)</li><li>second-line: amoxicillin or cefalexin</li></ul></li><li>asymptomatic bacteriuria in pregnant women:<ul><li>a urine culture should be performed routinely at the first antenatal visit</li><li>Clinical Knowledge Summaries recommend <span id="concept_popover_id_419" class="concept concept-0 trigger-link" data-cid="419" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative419'>You've never been tested on this concept</div><br><div id='div_concept_rating419' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(30,255,0)'>Importance: <b>94</b></span> </div>" data-original-title="Asymptomatic bacteriuria in pregnant women should be immediately treated with antibiotics ">an immediate antibiotic prescription</span> of either nitrofurantoin (should be avoided near term), amoxicillin or cefalexin. This should be a 7-day course</li><li>the rationale of treating asymptomatic bacteriuria is the significant risk of progression to acute pyelonephritis</li><li>a further urine culture should be sent following completion of treatment as a <span class="concept" data-cid="420">test of cure</span></li></ul></li></ul><br>Men<br><ul><li><span class="concept" data-cid="10336">an immediate antibiotic prescription should be offered</span></li></ul><br>Catherised patients<br><ul><li><span class="concept" data-cid="4449">do not treat asymptomatic bacteria in catheterised patients</span></li><li>if the patient is symptomatic they should be treated with an antibiotic<ul><li><span class="concept" data-cid="5120">a 7-day, rather than a 3-day course should be given</span></li></ul></li></ul> <br><br><b>Acute pyelonephritis</b><br><br>For patients with sign of acute pyelonephritis hospital admission should be considered<br><ul><li>local antibiotic guidelines should be followed if available</li><li>the BNF currently recommends a broad-spectrum cephalosporin or a quinolone (for non-pregnant women) for 10-14 days</li></ul></div>
|!Age|!Recommended immunisations|
|!At birth|BCG if risk factors (see below)|
|!2 months|DPT PHH - Rota - ~MenB|
|!3 months*|DPT PHH - Rota - Pc|
|!4 months|DPT PHH - ~MenB|
|!12-13 months|Hib - [[MMR|MMR]] - Pc - ~MenBC|
|!2-8 years|annual Flu|
|!3-4 years|DPT P - [[MMR|MMR]]|
|!12-13 years|Papa|
|!13-18 years|DT P - ~MenACWY|
<div id="body_content">
The current UK immunisation schedule is as follows. <br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Age</b></th><th><b>Recommended immunisations</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="8924">At birth</span></td><td>BCG if risk factors (see below)</td></tr><tr><td><span class="concept" data-cid="8925">2 months</span></td><td>'6-1 vaccine' (diphtheria, tetanus, whooping cough, polio, Hib and <span class="concept" data-cid="1694">hepatitis B</span>)<br>Oral rotavirus vaccine <br><span class="concept" data-cid="1239">Men B</span></td></tr><tr><td><span class="concept" data-cid="8926">3 months</span>*</td><td>'6-1 vaccine' (diphtheria, tetanus, whooping cough, polio, Hib and <span class="concept" data-cid="1694">hepatitis B</span>)<br>Oral rotavirus vaccine <br><span class="concept" data-cid="10531">PCV</span></td></tr><tr><td><span class="concept" data-cid="8927">4 months</span></td><td>'6-1 vaccine' (diphtheria, tetanus, whooping cough, polio, Hib and <span class="concept" data-cid="1694">hepatitis B</span>)<br><span class="concept" data-cid="1239">Men B</span></td></tr><tr><td><span class="concept" data-cid="8928">12-13 months</span></td><td>Hib/Men C<br><span class="concept" data-cid="1238">MMR</span><br><span class="concept" data-cid="10531">PCV</span><br><span class="concept" data-cid="1239">Men B</span></td></tr><tr><td><span class="concept" data-cid="8932">2-8 years</span></td><td>Flu vaccine (annual)</td></tr><tr><td><span class="concept" data-cid="8929">3-4 years</span></td><td>'4-in-1 pre-school booster' (diphtheria, tetanus, whooping cough and polio)<br>MMR</td></tr><tr><td><span class="concept" data-cid="8930">12-13 years</span></td><td>HPV vaccination</td></tr><tr><td><span class="concept" data-cid="8931">13-18 years</span></td><td>'3-in-1 teenage booster' (tetanus, diphtheria and polio)<br>Men ACWY</td></tr></tbody></table></div><br>At birth the BCG vaccine should be given if the baby is deemed at risk of tuberculosis (e.g. Tuberculosis in the family in the past 6 months). <br><br><b>Meningitis ACWY vaccine</b><br><br>Note that the meningitis ACWY vaccine has replaced meningitis C for 13-18 year-olds. This is due to an increased incidence of meningitis W disease in recent years. The ACWY vaccine will also be offered to new students (up to the age of 25 years) at university. With respect to getting the vaccine, the NHS give the following advice to patients:<br><br><div class="bs-callout bs-callout-default"><i><i><br>'GP practices will automatically send letters inviting 17-and 18-year-olds in school year 13 to have the Men ACWY vaccine.<br><br>Students going to university or college for the first time as freshers, including overseas and mature students up to the age of 25, should contact their GP to have the Men ACWY vaccine, ideally before the start of the academic year'<br></i></i></div><br>Key<br><ul><li>Hib = <i>Haemophilus influenzae</i> B vaccine</li><li>PCV = Pneumococcal Conjugate Vaccine</li><li>Men B = Meningococcal B vaccine</li><li>Men C = Meningococcal C vaccine</li><li>Men ACWY = Meningococcal vaccine covering A, C, W and Y serotypes</li><li>MMR = Measles, Mumps, Rubella vaccine</li><li>HPV = Human Papilloma Vaccine</li></ul><br>*<b>Meningitis C vaccine</b><br><br>This used to be given at 3 months but has now been discountinued. The NHS immunisation website states:<br><br><div class="bs-callout bs-callout-default"><i><i><br>From July 1 2016, the Men C vaccine will be discontinued from the NHS childhood vaccination programme.<br><br>The success of the Men C vaccination programme means there are almost no cases of Men C disease in babies or young children on the UK any longer.<br><br>The dose of Men C vaccine that used to be offered to babies at 12 weeks of age has therefore been removed from the vaccination schedule.<br><br>All children will continue to be offered the Hib/Men C vaccine at one year of age, and the Men ACWY vaccine at 14 years of age to provide protection across all age groups.<br></i></i></div></div>
---
>MEN ACB 123
*Meningitis A is given once - C twice - B thrice
---
>Bs are Thrice
*Hep B and Men B given thrice
---
>DP P 5 times - T4
>MMRR 2
*MMR and Rota 2 times - Also Pneumococcal vaccine
---
It is important to be aware of vaccines which are of the live-attenuated type as these may pose a risk to immunocompromised patients. The main types of vaccine are as follows:
Live attenuated
* BCG
* measles, mumps, rubella (MMR)
* influenza (intranasal)
* oral rotavirus
* oral polio
* yellow fever
* oral typhoid
Inactivated preparations
* rabies
* hepatitis A
* influenza (intramuscular)
Toxoid (inactivated toxin)
* tetanus
* diphtheria
* pertussis
Subunit and conjugate vaccines are often grouped together. Subunit means that only part of the pathogen is used to generate an immunogenic response. A conjugate vaccine is a particular type that links the poorly immunogenic bacterial polysaccharide outer coats to proteins to make them more immunogenic
* pneumococcus (conjugate)
* haemophilus (conjugate)
* meningococcus (conjugate)
* hepatitis B
* human papillomavirus
Notes
* influenza: different types are available, including whole inactivated virus, split virion (virus particles disrupted by detergent treatment) and sub-unit (mainly haemagglutinin and neuraminidase)
* cholera: contains inactivated Inaba and Ogawa strains of Vibrio cholerae together with recombinant B-subunit of the cholera toxin
* hepatitis B: contains HBsAg adsorbed onto aluminium hydroxide adjuvant and is prepared from yeast cells using recombinant DNA technology
---
>DPT Toxoid
---
>Inactivated IM injections Rabies-HepA-Influenza
---
>Live attenuated usually same route(exception: BCG)
*MMR - Intranasal Influenza - Oral Polio - Oral Typhoid - Oral Rota - Yellow fever
---
>Conjugate grouped together - Pneumonia - Meningitis - STDs
*Pneumococcus - Haemophilus - Meningococcus - HbV - HpV
---
!!!<center>''VAGINAL BLEEDING''</center>
<hr>
* Check pregnancy status first
* Pregnancy ≤20 wks – Ectopic pregnancy, retained products of conception, complication of pregnancy termination.
* Pregnancy >20 wks – Placental abruption, placenta previa, uterine rupture, postpartum hemorrhage.
* Other genital tract causes – Acute severe menorrhagia, genitourinary trauma, uterine arteriovenous malformation.
* Common non-life-threatening causes of vaginal bleeding include: labor ("bloody show"), spontaneous abortion, ruptured ovarian cyst, ovarian torsion, gynecologic infection, foreign body, medications, coagulation disorders, and gynecologic cancers.
* Important factors to consider in the history include patient age, the characteristics of bleeding (eg, severity, duration, onset), the possibility of pregnancy or trauma, associated symptoms (including bleeding at other sites, pain, fever), any systemic disease, and medications (particularly those affecting coagulation or platelet function).
* Check vitals
* Inform Maternity or Female ward sister and talk with OB-Gyn on call.
* The pelvic examination is paramount for determining the source and volume of bleeding, and whether it is ongoing, but a manual examination is NOT performed on pregnant women with vaginal bleeding after 20 weeks gestation until placenta previa has been ruled out definitively by ultrasound (US) examination.
* As a fetus approaches viability (between 22 to 24 weeks), fetal heart rate (FHR) becomes a key vital sign. The normal range for the FHR is 110 to 160 beats per minute.
* Get blood sample for type and crossmatch for any woman with severe or symptomatic vaginal bleeding who may require transfusion
* CBC,urine pregnancy test (hCG)
* The patient with vaginal bleeding is approached systematically based upon the answers to a few simple questions:
* Is the patient hemodynamically unstable?
* Is the patient pregnant? If yes, is it the patient less than 20 weeks gestational age, or later?
* Hemodynamically unstable: IVF, Blood transfusion
* Call the gynecologist on call for any hemodynamically unstable patient with severe vaginal bleeding.
* Pregnant patients often require surgery or delivery.
!!!<center>''VAGINAL CANDIDIASIS''</center>
<hr>
* Cap FLucon 150 STAT OR creams or suppositories: clotrimazole, miconazole, nystatin. Intravaginal azoles, single dose to 7-14 days.
<div id="notecontent">Bacterial vaginosis (BV) describes an overgrowth of predominately anaerobic organisms such as <span class="concept" data-cid="310"><i>Gardnerella vaginalis</i></span>. This leads to a consequent fall in lactic acid producing aerobic lactobacilli resulting in a raised vaginal pH.<br><br>Whilst BV is not a sexually transmitted infection it is seen almost exclusively in sexually active women.<br> <br>Features<br><ul><li>vaginal discharge: 'fishy', offensive</li><li>asymptomatic in 50%</li></ul><br>Amsel's criteria for diagnosis of BV - 3 of the following 4 points should be present<br><ul><li>thin, white homogenous discharge</li><li>clue cells on microscopy: stippled vaginal epithelial cells</li><li><span class="concept" data-cid="5255">vaginal pH > 4.5</span></li><li>positive whiff test (addition of potassium hydroxide results in fishy odour)</li></ul><br>Management<br><ul><li><span id="concept_popover_id_309" class="concept concept-3-u trigger-link" data-cid="309" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative309'>You've been tested on this concept once, 2 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating309' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(198,255,0)'>Importance: <b>61</b></span> </div>" data-original-title="Bacterial vaginosis: oral metronidazole">oral metronidazole for 5-7 days</span></li><li>70-80% initial cure rate</li><li>relapse rate > 50% within 3 months</li><li>the BNF suggests topical metronidazole or <span class="concept" data-cid="8946">topical clindamycin</span> as alternatives</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd904b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd904.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd904b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of bacterial vaginosis and <i>Trichomonas vaginalis</i></div><br>Bacterial vaginosis in <span id="concept_popover_id_311" class="concept concept-0 trigger-link" data-cid="311" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative311'>You've never been tested on this concept</div><br><div id='div_concept_rating311' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(71,255,0)'>Importance: <b>86</b></span> </div>" data-original-title="Bacterial vaginosis in pregnancy: still use oral metronidazole">pregnancy</span><br><ul><li>results in an increased risk of preterm labour, low birth weight and chorioamnionitis, late miscarriage</li><li>it was previously taught that oral metronidazole should be avoided in the first trimester and topical clindamycin used instead. Recent guidelines however recommend that oral metronidazole is used throughout pregnancy. The BNF still advises against the use of high dose metronidazole regimes</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb002b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb002.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb002b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Clue cells - epithelial cells develop a stippled appearance due to being covered with bacteria</div></div>
---
>NO CLUE why GREY FISH in CLEAN METRO GARDENS
*Non pruritic - Clue cells(epithelial cells coated with Bacteria) - Fishy odor - Grey color - Gardenella Vaginalis - Treat only patient with Metronidazole/Clindamycin
---
!!!<center>''BACTERIAL VAGINOSIS''</center>
<hr>
* Metro 500 BD x 7 days OR Metrogyl vaginal gel 1 HS x 5 days
* Or Tinidazole 2 g ODx 3 days Or 2% Clindamycin Vaginal cream 5 gm HS x 5 days. Treat the partner.
* Metrogyl gel intravaginally OD 5d OR Metrogyl 400 BD 7d OR Dalacin-C 300 BD 7d
!!Sodium valproate
is used in the management of epilepsy and is first-line therapy for generalised seizures. It works by increasing GABA activity.
Adverse effects
*gastrointestinal: nausea
*increased appetite and weight gain
*alopecia: regrowth may be curly
*ataxia
*tremor
*hepatotoxicity, P450 inhibitor, hyperammonemic encephalopathy: L-carnitine may be used as treatment if this develops
*pancreatitis
*thrombocytopaenia
*teratogenic
*hyponatraemia
---
>VALipothe Old ai Koolipothav - Mosapothav(opposite effects)
*Loose Hair - Tremor - Ataxia - Gain Wt(inc appetite)
>Sodium in name but causes HypoNatremia
>Nausea but increased Appetite
---
>Hepatotoxicity - Pancreatitis
>ThromboCytopenia - Teratogenic
---
> EpiLepsyRx blasts Marrow
*PhenyToin: AplasticAnemia
*ValProate: ThromboCytopenia
*CarbamaZapine: Leucopenia - AgranuloCytosis
---
<div id="notecontent">Acute treatment of variceal haemorrhage<br><ul><li>ABC: patients should ideally be resuscitated prior to endoscopy</li><li>correct clotting: FFP, vitamin K</li><li>vasoactive agents: terlipressin is currently the only licensed vasoactive agent and is supported by NICE guidelines. It has been shown to be of benefit in initial haemostasis and preventing rebleeding. Octreotide may also be used although there is some evidence that terlipressin has a greater effect on reducing mortality</li><li>prophylactic antibiotics have been shown to reduce mortality in patients with liver cirrhosis. Quinolones are typically used. NICE support this in their 2016 guidelines: '<i>Offer prophylactic intravenous antibiotics for people with cirrhosis who have upper gastrointestinal bleeding.</i>'</li><li>endoscopy: endoscopic variceal band ligation is superior to endoscopic sclerotherapy. NICE recommend band ligation</li><li>Sengstaken-Blakemore tube if uncontrolled haemorrhage</li><li>Transjugular Intrahepatic Portosystemic Shunt (TIPSS) if above measures fail</li></ul><br>Prophylaxis of variceal haemorrhage<br><ul><li><span id="concept_popover_id_3946" class="concept concept-3-u trigger-link" data-cid="3946" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative3946'>You've been tested on this concept once, 3 weeks ago, and got the associated question correct.</div><br><div id='div_concept_rating3946' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(209,255,0)'>Importance: <b>59</b></span> </div>" data-original-title="A non-cardioselective B-blocker (NSBB) is used for the prophylaxis of oesophageal bleeding">propranolol</span>: reduced rebleeding and mortality compared to placebo</li><li>endoscopic variceal band ligation (EVL) is superior to endoscopic sclerotherapy. It should be performed at two-weekly intervals until all varices have been eradicated. Proton pump inhibitor cover is given to prevent EVL-induced ulceration. This is supported by NICE who recommend: '<i>Offer endoscopic variceal band ligation for the primary prevention of bleeding for people with cirrhosis who have medium to large oesophageal varices.</i>'</li></ul></div>
---
| !VARICEAL HEMORRHAGE PROPHYLAXIS |<|
|Propanolol|Tab Inderal 20 mg BD, 2 wks|
A varicocele is an abnormal enlargement of the testicular veins. They are usually asymptomatic but may be important as they are associated with infertility.
Varicoceles are much more common on the left side (> 80%). Features:
* classically described as a 'bag of worms'
* subfertility
Diagnosis
* ultrasound with Doppler studies
Management
* usually conservative
* occasionally surgery is required if the patient is troubled by pain. There is ongoing debate regarding the effectiveness of surgery to treat infertility
* `Rule out Renal Cell Carcinoma` [[RCC]]
<div id="notecontent">Vascular dementia (VD) is the second most common form of dementia after Alzheimer disease. It is not a single disease but a group of syndromes of cognitive impairment caused by different mechanisms causing ischaemia or haemorrhage secondary to cerebrovascular disease. Vascular dementia has been increasingly recognised as the most severe form of the spectrum of deficits encompassed by the term vascular cognitive impairment (VCI). Early detection and an accurate diagnosis are important in the prevention of vascular dementia.<br><br>Epidemiology<br><ul><li>VD is thought to account for around 17% of dementia in the UK</li><li>Prevalence of dementia following a first stroke varies depending on location and size of the infarct, definition of dementia, interval after stroke and age among other variables. Overall, stroke doubles the risk of developing dementia.</li><li>Incidence increases with age</li></ul><br>The main subtypes of VD:<br><ul><li>Stroke-related VD – multi-infarct or single-infarct dementia</li><li>Subcortical VD – caused by small vessel disease</li><li>Mixed dementia – the presence of both VD and Alzheimer’s disease</li></ul><br>Risk factors<br><ul><li>History of stroke or transient ischaemic attack (TIA)</li><li>Atrial fibrillation</li><li>Hypertension</li><li>Diabetes mellitus</li><li>Hyperlipidaemia</li><li>Smoking</li><li>Obesity</li><li>Coronary heart disease</li><li>A family history of stroke or cardiovascular </li></ul><br>Rarely, VD can be inherited as in the case of CADASIL (cerebral autosomal dominant arteriopathy with subcortical infarcts and leukoencephalopathy.<br><br>Patients with VD typically presents with <br><ul><li>Several months or several years of a history of a sudden or <span id="concept_popover_id_10749" class="concept concept-0 trigger-link" data-cid="10749" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative10749'>You've never been tested on this concept</div><br><div id='div_concept_rating10749' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(45,255,0)'>Importance: <b>91</b></span> </div>" data-original-title="Stepwise deterioration in cognitive function? - think vascular dementia"><b>stepwise deterioration</b></span> of cognitive function.</li></ul><br>Symptoms and the speed of progression vary but may include:<br><ul><li>Focal neurological abnormalities e.g. visual disturbance, sensory or motor symptoms</li><li>The difficulty with attention and concentration</li><li>Seizures</li><li>Memory disturbance</li><li>Gait disturbance</li><li>Speech disturbance</li><li>Emotional disturbance</li></ul><br>Diagnosis is made based on:<br><ul><li>A comprehensive history and physical examination</li><li>Formal screen for cognitive impairment</li><li>Medical review to exclude medication cause of cognitive decline</li><li>MRI scan – may show infarcts and extensive white matter changes</li></ul><br>National Institute for health and care excellence (NICE) recommends that diagnosis be made using the NINDS-AIREN criteria for probable vascular dementia<br><div class="table-responsive"><table class="table table-bordered"><tbody><tr><td>Presence of cognitive decline that interferes with activities of daily living, not due to secondary effects of the cerebrovascular event<br><ul><li>established using clinical examination and neuropsychological testing</li></ul></td></tr><tr><td>Cerebrovascular disease<br><ul><li>defined by neurological signs and/or brain imaging</li></ul></td></tr><tr><td>A relationship between the above two disorders inferred by:<br><ul><li>the onset of dementia within three months following a recognised stroke</li><li>an abrupt deterioration in cognitive functions</li><li>fluctuating, stepwise progression of cognitive deficits</li></ul></td></tr></tbody></table></div><br>General management<br><ul><li>Treatment is mainly symptomatic with the aim to address individual problems and provide support to the patient and carers</li><li>Important to detect and address cardiovascular risk factors – for slowing down the progression</li></ul><br>Non-pharmacological management <br><ul><li>Tailored to the individual </li><li>Include: cognitive stimulation programmes, multisensory stimulation, music and art therapy, animal-assisted therapy</li><li>Managing challenging behaviours e.g. address pain, avoid overcrowding, clear communication</li></ul><br>Pharmacological management<br><ul><li>There is no specific pharmacological treatment approved for cognitive symptoms</li><li>Only consider AChE inhibitors or memantine for people with vascular dementia if they have suspected comorbid Alzheimer’s disease, Parkinson’s disease dementia or dementia with Lewy bodies.</li><li>There is no evidence that aspirin is effective in treating patients with a diagnosis of vascular dementia.</li><li>No randomized trials found evaluating statins for vascular dementia</li></ul></div>
Male sterilisation - vasectomy
* failure rate: 1 per 2,000 - male sterilisation is a more effective method of contraception than female sterilisation
* simple operation, can be done under LA (some GA), go home after a couple of hours
* doesn't work immediately
* semen analysis needs to be performed twice following a vasectomy before a man can have unprotected sex (usually at 16 and 20 weeks)
* complications: bruising, haematoma, infection, sperm granuloma, chronic testicular pain (affects between 5-30% men)
* the success rate of vasectomy reversal is up to 55%, if done within 10 years, and approximately 25% after more than 10 years
<hr><center>''VECURONIUM''</center><hr>
<center>''Adult Dosage''</center><hr>
''ICU paralysis (eg, facilitate mechanical ventilation) in selected adequately sedated patients: I.V.:''
* ''Initial bolus dose:'' 0.08-0.1 mg/kg, then a continuous I.V. infusion of 0.8-1.7 mcg/kg/minute; monitor depth of blockade every 1-2 hours initially until stable dose, then every 8-12 hours. Usual maintenance infusion dose range: 0.8-1.2 mcg/kg/minute.
* ''Dosage adjustment:'' Adjust rate of administration in increments of 0.3 mcg/kg/minute or by 50% reductions of previous dose according to peripheral nerve stimulation response or desired clinical response. Discontinue infusion if neuromuscular function does not return.
* ''Note:'' When possible, minimize depth and duration of paralysis. Stopping the infusion daily for some time until forced to restart based on patient condition is recommended to reduce post-paralytic complications (eg, acute quadriplegic myopathy syndrome [AQMS])
* ''Intermittent bolus dosing:'' 0.1-0.2 mg/kg/dose; may be repeated when neuromuscular function returns
Venous ulceration is typically seen above the medial malleolus
Investigations
* ankle-brachial pressure index (ABPI) is important in non-healing ulcers to assess for poor arterial flow which could impair healing
* a 'normal' ABPI may be regarded as between 0.9 - 1.2. Values below 0.9 indicate arterial disease. Interestingly, values above 1.3 may also indicate arterial disease, in the form of false-negative results secondary to arterial calcification (e.g. In diabetics)
Management
* compression bandaging, usually four layer (only treatment shown to be of real benefit)
* oral pentoxifylline, a peripheral vasodilator, improves healing rate
* small evidence base supporting use of flavinoids
* little evidence to suggest benefit from hydrocolloid dressings, topical growth factors, ultrasound therapy and intermittent pneumatic compression
!!!<center>''VENTILATOR MANAGEMENT PROTOCOL''</center>
<hr>
* First switch on the ventilator
* Is the humidifier connected?
* Are all connections made properly?
* Take the height of the patient and calculate the IBW from the chart, check for ventilator settings
<center>
<img width=700 src="https://www.dropbox.com/s/k98rhzz5ci26do1/vent1.png?raw=1">
</center>
<center>
<img width=450 src="https://www.dropbox.com/s/gnaczusuicntnvh/vent2.jpeg?raw=1">
</center>
* Connect the test lung and make sure it is working.
* Make sure the ETT is in right place, get a CXR and connect eTCo2 monitor.
* Then connect the circuit to the patient.
* Is the patient getting the set TV?
* If the patient is not getting the set TV check the ETT position, any block,
* Is the patient getting the set FiO2?
* Is the patient maintaining sats?
* Restrain the patient’s hands
* Place a nasogastric tube
* Start ventilator bundle
''TROUBLESHOOTING AGITATION''
* Is the patient still properly connected?
* Hypoxemia or hypercarbia resulting from disconnection of the respirator may result in agitation.
* A patient who can speak is no longer intubated!
* Review the ventilator flow and pressure waveforms. Look for auto-PEEP.
* Failure of the expiratory flow to flatten at zero indicates air trapping or auto-PEEP. This may cause increased work of breathing and agitation
* What were the most recent ABG values?
* Again, hypoxemia or hypercarbia can cause agitation. Adjusting the settings can correct either problem.
* What does the chest x-ray show? Atelectasis from mucous plugging or pneumothorax can occur spontaneously in asthma or as a result of barotrauma and can result in hypoxemia or hypercarbia.
* The endotracheal tube (ETT) touching the carina or the larynx almost always causes coughing and/or agitation.
* What is the underlying diagnosis? What are the current medications and IV fluids? Agitation may be related to the underlying diagnosis or to a medication and may be unrelated to the patient’s respiratory status.
* Multiple metabolic disturbances (eg, hyponatremia and hypernatremia) can lead to confusion and possibly agitation.
* What are the ventilator settings? The ventilator setting may have been set incorrectly, resulting in hypoxemia or hypercarbia.
* A high sensitivity setting may make it impossible for the fatigued patient to trigger a breath.
* Barotrauma resulting in pneumothorax is associated with high PEEP settings, high tidal volumes, and peak inspiratory pressures > 45 cm.
* Worsening of underlying pulmonary disease?
* Pneumothorax?
* ETT displacement. The tube may be outside the trachea, high in the glottis, or down the right mainstem bronchus.
* Mucous plugs. May result in atelectasis and hypoxemia.
* Ventilator malfunction?
* Pulmonary embolism (PE). Immobilization is a major risk for PE?
* Aspiration?
* Inadequate oxygenation or respiratory muscle fatigue?
* Sepsis?
* ICU psychosis?
* Medications causing delirium?
* Electrolyte imbalance. Hyponatremia, hypernatremia, hypercalcemia, hypocalcemia, and hypophosphatemia can cause confusion, which can lead to agitation.
* Carefully check the patency, position, and function of the ETT.
* Check Vital signs.
* Tachypnea may suggest hypoxemia.
* Tachycardia and hypertension can result from agitation or may be associated with respiratory failure or an underlying problem such as MI
* Hypotension may be due to auto-PEEP, volume depletion, sepsis, cardiogenic shock, tension pneumothorax, or massive PE.
* An elevated temperature suggests sepsis, ventilator-associated nosocomial pneumonia, or pulmonary emboli.
* Tachycardia, tachypnea, and fever may be associated with PE or MI. A
* Check for distended neck veins suggesting pericardial tamponade or congestive heart failure (CHF).
* Auscultate for bilateral breath sounds. Absent breath sounds on one side suggest pneumothorax or an improperly placed ETT. Bilaterally absent breath sounds can be secondary to either bilateral pneumothoraces or severe respiratory failure.
* Palpate for subcutaneous emphysema, which can result from a very high PEEP or may be seen in patients with asthma.
* Subcutaneous emphysema may portend more serious barotrauma such as a life-threatening tension pneumothorax.
* Get ABGs. To rule out hypoxemia and hypercarbia as well as severe acidosis or alkalosis.
* Get KFT
* Get CXR
* Carefully check the ETT function, ventilator connections, and chart.
* Suction the patient vigorously. This confirms tube patency and clears out any mucous plugs.
* Bag the patient manually to check for ease of ventilation.
* Marked difficulty can be seen with tension pneumothorax or mucous plugging. If auto-PEEP is suspected, use a slower rate and decrease the tidal volume. This allows trapped gas time to escape and thus allows decreased intrathoracic pressure and increased venous return to the heart.
* If the patient appears cyanotic or “air hungry,” turn the FiO2 to 100% and the ventilator mode to Volume control or PRVC
* If hypotension and unilaterally absent breath sounds are found concomitantly, consider chest tube insertion for tension pneumothorax. Patients on ventilators can rapidly die of tension pneumothoraces.
* If you suspect ICU psychosis, reassure the patient. Have a family member help reorient the patient. Often a familiar voice works wonders! Ask the nurses to move the patient to a room with a window; this environmental feature has been shown to reduce ICU psychosis.
* Check the ventilator settings. Perhaps too much effort is required to open the valves or to initiate a breath. Lower the triggering sensitivity to 0.5 or 1.0 cm H20.
* Experiment with adding a little more pressure support for patient comfort.
* If everything else is stable and the patient is endangering him or herself, sedate the patient. Haloperidol (Haldol) 0.5–2.0 mg IM or IV and lorazepam (Ativan) 0.5–2.0 mg IV are the currently recommended agents.
''HYPOXEMIA''
* What is the sequence of ABGs? In other words, is this an acute or a slowly developing change?
* A rapid deterioration implies an immediate life-threatening process such as a tension pneumothorax or a massive PE.
* What is the underlying diagnosis? A patient with long-bone fractures may develop fat embolus syndrome, a patient with sepsis may develop (ARDS), and a patient with head injury may develop neurogenic pulmonary edema.
* What are the ventilator settings? Has a change been made recently? An error may have been made with the ventilator settings, or recent changes may have been made too aggressively in an attempt to wean the patient from the ventilator. Some patients are very sensitive to PEEP changes.
* Pneumonia?
* Atelectasis. The ETT may be placed too far in the right mainstem bronchus, or there may be mucous plugs.
* ARDS or cardiogenic pulmonary edema
* Pneumothorax?
* Bronchospasm?
* Pulmonary embolism?
* Aspiration. Still possible, even when an ETT is in place.
* Ventilator disconnection or malfunction?
* Incorrect settings. Has the patient recently been changed to intermittent mandatory ventilation, which has resulted in hypoventilation?
* Sedatives. These can result in hypoxemia secondary to hypoventilation. Sedatives should be used cautiously, especially during weaning. Patients on ventilators may develop atelectasis due to failure to sigh or cough when sedated.
* Confirm proper ETT position and listen for any leaks.
* Check Vital signs.
* Tachypnea implies worsening of the respiratory status.
* Tachycardia can be associated with a variety of conditions including PE, sepsis, MI, and worsening of underlying pulmonary pathology.
* Fever can be seen with PE, MI, or an infection.
* Check for bilateral breath sounds, signs of consolidation, or new onset of wheezing.
* Unilateral breath sounds suggest a pneumothorax or possibly displacement of the ETT in one of the mainstem bronchi. Palpate the chest for new subcutaneous emphysema, which can occur in asthmatics or as a result of high PEEP.
* Check the patient’s nailbeds for cyanosis from worsening pulmonary status.
* Also, check legs for unilateral edema or other signs of phlebitis that point to PE.
* Check for new rashes, which may suggest a drug or anaphylactic reaction.
* Repeat ABGs or check oximetry to assess accuracy of initial ABGs and progression of deterioration.
* Sputum appearance and Gram’s stain may direct antibiotic therapy if pneumonia is present.
* CXR, ECG
* Suction. Vigorously suction the patient to prove patency of the ETT and dislodge mucous plugs.
* Insert chest tube for pneumothorax.
* Reassess choice of antibiotic agents.
* Consider more vigorous chest physical therapy or even bronchoscopy for recalcitrant mucous plugging or atelectasis.
* Maximize bronchodilators if bronchospasm is the problem. Corticosteroids such as hydrocortisone 125 mg or methylprednisolone 60 mg should be added and given IV Q 6 hr. Aerosolized salbutamol should be given at least Q 4 hr.
* Cardiogenic pulmonary edema should be vigorously treated with afterload reduction and diuresis.
* Correct any hypoventilation. This may mean giving up on weaning, and using the VC mode with the patient essentially controlled on a high minute ventilation.
* Increase FiO2 to 100%. Your first priority is to prevent anoxic brain or cardiac damage. You may then reduce the FiO2 as other maneuvers further improve the paO2.
* PEEP recruits unused, collapsed, or partially collapsed alveoli to overcome pulmonary shunts. It should be added in 2–4 cm of H2O increments while cardiac output and blood pressure are monitored.
* Oxygen consumption can be markedly reduced by administering a neuromuscular blocking agent as a last resort. Remember to provide adequate analgesia and sedation as well.
* Correct any volume excess because it will obviously worsen CHF and ARDS.
* Volume depletion likewise alters cardiac output and may adversely affect oxygen delivery.
* A drop in blood pressure with the addition of PEEP almost always results from volume depletion.
* Correct anemia to maximize O2 delivery.
* Correct low cardiac output to maximize O2 delivery. Inotropic agents (eg, dobutamine) and agents for afterload reduction (eg, IV nitroglycerin or nitroprusside) can be used.
* Prone positioning. If the primary lung disorder is ARDS or acute lung injury, consider prone positioning of the patient. Up to 70% of patients have a dramatic response. However, the nursing staff need experience in this technique since ETT dislodgement and unusual pressure sores may occur. Patients are left prone for 6–12 hours, flipped back supine for 1–2 hours, and then the cycle is repeated.
''HYPERCARBIA''
* What is the sequence of ABGs? In other words, is this an acute or a slowly developing change?
* Rapid deterioration implies an immediate life-threatening process such as a tension pneumothorax or a massive pulmonary embolism.
* What is the underlying diagnosis? Worsening of underlying pulmonary disease (pneumonia, atelectasis, or bronchospasm) can cause hypoventilation.
* Too low a rate, inadequate tidal volume, or both?
* Patient tiring during SIMV or weaning
* ETT leak?
* Worsening bronchospasm?
* PE. Keep in mind that immobilization is a major risk factor.?
* High-carbohydrate feedings?
* Oversedation. Decreases central ventilatory drive?
* Check ETT position and look for a leak.
* Check Vital signs.
* Tachycardia can be associated with fever, sepsis, worsening bronchospasm, PE, and hyperthyroidism.
* Tachypnea can be seen with PE, worsening bronchospasm, or sepsis.
* Fever suggests infection but can also be seen with hyperthyroidism and PE.
* Auscultate for new wheezes and look for inequality of breath sounds.
* Listen for a new loud P2, which suggests a PE.
* Check patient’s legs for unilateral edema or other signs of thrombophlebitis.
* Get ABG, CBC, CXR
* Check position and functioning of ETT. If there is a persistent leak, replace the tube.
* Check with particular care for leaky connections.
* Verify that the ordered sedatives are the drugs that were actually given and note time of last dose.
* If the patient is oversedated, you can either increase the minute ventilation; or reverse sedation with naloxone 0.4 mg IV for narcotics or flumazenil 1.0 mg IV over 5 minutes for benzodiazepines.
* Look for a source of sepsis. Adjust antibiotics as indicated.
* Review ventilator settings. If the tidal volume is too low, dead space ventilation will be present. Correct this condition by increasing the tidal volume. If the patient is tiring on a low synchronized intermittent mandatory ventilation rate, switch to either a higher rate or change to AC mode.
* Review the patient’s nutrition regimen. If the patient is critically ill with bronchospasm or ARDS, you may be forced to reduce CO2 production by decreasing the percentage of carbohydrates in tube feedings
''HIGH PEAK PRESSURES''
* Is this a new problem or has it developed progressively?
* What is the underlying diagnosis? Severe status asthmaticus or ARDS can cause high ventilatory peak pressures.
* What are the most recent ABGs? A decrease in the pO2 or an increase in the pCO2 may point to a worsening of the underlying pulmonary disease.
* Has ETT function or position changed? Is it possible to suction the patient? The tube could be kinked or plugged by secretions.
* ETT: Too small or obstructed by secretions, Kinked, Migration down the right mainstem so that the entire tidal volume flows into one lung.
* Incorrect ventilator settings
* High tidal volume. Tidal volumes > 10 mL/kg may increase distention pressure tremendously.
* High PEEP. PEEP should always be used at the lowest possible level.
* High minute ventilation. A high minute ventilation may lead to the phenomenon of auto-PEEP, in which the patient has inadequate time to exhale, leading to “stacked breaths.” Auto-PEEP may cause hypotension because of high intrathoracic pressure decreasing venous return.
* Worsening lung disease. Lung compliance decreases in all of the following: Severe status asthmaticus, ARDS, Cardiogenic pulmonary edema, Interstitial lung disease
* Uncooperative or agitated patient: Biting the ETT, Fighting the ventilator, Coughing
* Tension pneumothorax?
* Check position of ETT to rule out migration down the right mainstem bronchus; check patency of the ETT.
* Check Vital signs.
* Tachycardia and tachypnea can occur with worsening of the underlying pulmonary disease and with agitation. Hypotension and tachycardia are seen with tension pneumothorax, severe auto-PEEP, and the abdominal compartment syndrome.
* An increase in jugular venous distention (JVD) implies
* Absent breath sounds, especially with hypotension, and unilateral hyperresonance to percussion point to tension pneumothorax. Rales suggest CHF.
* Abdomen. Examine for tenderness and distention.
* Check for subcutaneous emphysema, which can be associated with barotrauma or with severe asthma.
* Get ABG, CBC, CXR
* Measure auto-PEEP or check for it via the waveforms. View the peak airway pressure pattern. A rapid rise and fall suggests a kinked or obstructed ETT.
* Check the patient’s mouth to be sure the patient is not biting the tube. Suction the ETT to make sure it is not occluded and leading to artificially high pressures.
* Try to suction the patient. If the patient is biting down, insert an oral airway or sedate the patient.
* If the patient is not biting down on the ETT but the suction tube will not go down the ETT, the ETT is kinked or blocked, possibly by a mucous plug, and must be replaced.
* Ambu bag the patient and confirm equal breath sounds. Unequal breath sounds may result from a tension pneumothorax or from improper positioning of the ETT. Reposition the ETT if necessary.
* On an average-sized person, an oral ETT should not be in farther than 24 cm at the lip; however, there is considerable variability among patients, and the chest x-ray should always be reviewed. If there is considerable resistance to bagging, a tension pneumothorax, auto-PEEP, or a mucous plug may be present.
* Place a chest tube if a pneumothorax is present.
* Adjust the ventilator.
* Try to reduce the PEEP to the minimum needed for adequate oxygenation.
* Try reducing high tidal volumes to 5–6 mL/kg body weight.
* Increase FiO2 as needed to ensure adequate oxygenation.
* Sedation may have to be increased.
* Consider switching to PRVC mode
''WEANING''
* Requirements.
* Once the underlying cause of respiratory failure has been corrected, it is time for the most arduous task of all: weaning the patient from the respirator.
* Stabilization. The underlying disease is under optimum control.
* Initiation of weaning. The process is begun in the early morning.
* Patients prefer to rest at night rather than work at breathing. Desirable conditions are:
* PaO2 > 60, PEEP <5 and FiO2 ≤ 0.5
''Weaning Techniques''
* ''T-piece:'' If the patient tolerates breathing independently for 2 hours, he or she is extubated immediately.
* This technique, however, has important drawbacks. No alarms are available because the patient is totally disconnected from the ventilator. The technique is time-consuming for the nurses. Perhaps most important, it is much more work for the patient than breathing spontaneously without an ETT. This is due to the relatively small diameter of the tube. T-tube trials are thus usually limited to 2-hour trials or less.
* ''Synchronized intermittent mandatory ventilation (SIMV). ''
* In this method, fewer and fewer machine breaths are given as the patient begins taking spontaneous breaths in the intervals.
* For example, a patient breathing at a rate of 14 in VC mode is switched to SIMV mode, rate 14. The rate is then decreased to 10, to 6, to 4, and then to 0. Most physicians either place the patient on continuous positive airway pressure (CPAP) mode at this juncture or observe the patient briefly on a T piece.
* This method has several theoretical advantages over T-piece weaning. Backup alarms, including automatic rates in case of apnea, are in place. A graded assumption of work is done, allowing respiratory muscle “retraining”; however, this method has never proved to be clearly superior to T-piece weaning.
* Moreover, there is still a high work of breathing because of the ETT resistance as well as the inherent resistance of the SIMV circuit valves.
* One way to decrease the work of breathing with the SIMV weaning technique is to add pressure support (PS) to the system.
* Pressure support is a positive pressure boost that is initiated when a certain liter flow rate during inspiration is sensed by the respirator.
* A PS level of 8–12 cm will overcome the increased work caused by the ETT resistance.
* ''CPAP and PS ''
* In this method, the patient is switched to the spontaneous breathing mode, which in some ventilators is the CPAP mode.
* In current usage, CPAP is equivalent to PEEP, except that it is used exclusively in spontaneously breathing mode.
* Anywhere from 0 to 30 cm pressure may be used, but generally the lowest level possible (usually 0–5 cm) is preferred.
* Pressure support may be used concomitantly to augment the patient’s spontaneous breaths. It can then be progressively decreased as the patient increases tidal volumes.
* For example, PS levels of 25, then 20, then 15, and finally 10 can be used while monitoring the patient’s breath rate, tidal volumes, and ABGs.
* This method requires an alert, cooperative patient who is breathing spontaneously; if those conditions do not pertain, why wean anyway?
* Machine backup functions remain in place in case of apnea or other inadequate parameters.
* Extubation to BIPAP
* Patients with advanced lung disease may never reach standard weaning criteria. Extubation to partial ventilatory support is often successful.
* It decreases risk of ventilator-associated pneumonia and saves the patient from having a tracheostomy tube. This should also be considered in patients with poor left ventricular cardiac function.
* Rapidly going off positive pressure may induce pulmonary edema in these fragile patients.
* Deciding when to extubate the patient is part of the art of medicine. Still, the fulfillment of certain criteria ensures success.
* The following weaning parameters (as discussed earlier) are acceptable:
# Respiratory rate is < 30/min
# ABGs show a pH > 7.35 and adequate oxygenation on ≤ 50% FiO2
# The patient is awake and alert
# A normal gag reflex is present
# The stomach is not distended
''Postextubation care''
* After extubation, it is important to encourage thepatient to cough frequently and forcefully.
* Respiratory therapy treatments should be continued.
* Incentive spirometry should be used several times an hour while the patient is awake to encourage deep breathing.
* The patient must be carefully observed for stridor, respiratory muscle fatigue, or other signs of failure.
* Oxygen should be given at the same level or at a level slightly higher than was given via the respirator before intubation.
* The ABGs should be checked 2–4 hours after extubation to confirm adequate ventilation and oxygenation.
*
!!! <center>''MECHANICAL VENTILATION PROTOCOL''</center>
<hr>
''INCLUSION CRITERIA:'' Acute onset of
# PaO2/FiO2 ≤ 300 (corrected for altitude)
# Bilateral (patchy, diffuse, or homogeneous) infiltrates consistent with pulmonary edema
# No clinical evidence of left atrial hypertension
''PART I: VENTILATOR SETUP AND ADJUSTMENT''
# Calculate predicted body weight (PBW)<br>''Males'' = 50 + 2.3 [height (inches) - 60]<br>''Females'' = 45.5 + 2.3 [height (inches) -60]
# Select any ventilator mode
# Set ventilator settings to achieve initial VT = 8 ml/kg PBW
# Reduce VT by 1 ml/kg at intervals ≤ 2 hours until VT = 6ml/kg PBW.
# Set initial rate to approximate baseline minute ventilation (not > 35 bpm).
# Adjust VT and RR to achieve pH and plateau pressure goals below.
''OXYGENATION GOAL: PaO2 55-80 mmHg or SpO2 88-95%''
Use a minimum PEEP of 5 cm H,,2,,O. Consider use of incremental FiO2/PEEP
combinations such as shown below (not required) to achieve goal.
''Lower PEEP/higher FiO2''
|FiO2|0.3|0.4|0.4|0.5|0.5|0.6|0.7|0.7|
|PEEP|5|5|8|8|10|10|10|12|
|FiO2|0.7|0.8|0.9|0.9|0.9|1.0|
|PEEP|14|14|14|16|18|18-24|
''Higher PEEP/lower FiO2''
|FiO2|0.3|0.3|0.3|0.3|0.3|0.4|0.4|0.5|
|PEEP|5|8|10|12|14|14|16|16|
|FiO2|0.5|0.5-0.8|0.8|0.9|1.0|1.0|
|PEEP|18|20|22|22|22|24|
<hr>
''PLATEAU PRESSURE GOAL: ≤ 30 cm H,,2,,O''
<br>Check Pplat (0.5 second inspiratory pause), at least q 4h and after each
change in PEEP or VT.<br>
''If Pplat > 30 cm H,,2,,O:'' decrease VT by 1ml/kg steps (minimum = 4
ml/kg).<br>
''If Pplat < 25 cm H,,2,,O and VT< 6 ml/kg,'' increase VT by 1 ml/kg until
Pplat > 25 cm H,,2,,O or VT = 6 ml/kg.<br>
''If Pplat < 30 and breath stacking or dys-synchrony occurs:'' may increase VT in 1ml/kg increments to 7 or 8 ml/kg if Pplat remains < 30 cm H,,2,,O.
<hr>
''pH GOAL: 7.30-7.45''<br>
''Acidosis Management: (pH < 7.30)''<br>
''If pH 7.15-7.30:'' Increase RR until pH > 7.30 or PaCO2 < 25 (Maximum set RR = 35).<br>
''If pH < 7.15:'' Increase RR to 35.<br>
If pH remains < 7.15, VT may be increased in 1 ml/kg steps until pH >
7.15 (Pplat target of 30 may be exceeded).<br>
May give NaHCO3<br>
''Alkalosis Management: (pH > 7.45)'' Decrease vent rate if possible.
<hr>
''I:E RATIO GOAL:'' Recommend that duration of inspiration be < duration of expiration.
<br><br><br>
''PART II: WEANING''
''A. Conduct a SPONTANEOUS BREATHING TRIAL daily when:''
:# FiO2 ≤ 0.40 and PEEP ≤ 8 OR FiO2 < 0.50 and PEEP < 5.
:# PEEP and FiO2 ≤ values of previous day.
:# Patient has acceptable spontaneous breathing efforts. (May decrease vent rate by 50% for 5 minutes to detect effort.)
:# Systolic BP ≥ 90 mmHg without vasopressor support.
:# No neuromuscular blocking agents or blockade.
''B. SPONTANEOUS BREATHING TRIAL (SBT):<br>
If all above criteria are met and subject has been in the study for at least 12 hours, initiate a trial of UP TO 120 minutes of spontaneous breathing with FiO2 < 0.5 and PEEP < 5:''
# Place on T-piece, trach collar, or CPAP ≤ 5 cm H,,2,,O with PS < 5
# Assess for tolerance as below for up to two hours.
## SpO2 ≥ 90: and/or PaO2 ≥ 60 mmHg
## Spontaneous VT ≥ 4 ml/kg PBW
## RR ≤ 35/min
## pH ≥ 7.3
## No respiratory distress (distress= 2 or more)
#### HR > 120% of baseline
#### Marked accessory muscle use
#### Abdominal paradox
#### Diaphoresis
#### Marked dyspnea
# If tolerated for at least 30 minutes, consider extubation.
# If not tolerated resume pre-weaning settings.
<hr>
''<center>Definition of UNASSISTED BREATHING</center>''
(Different from the spontaneous breathing criteria as PS is not allowed)
# Extubated with face mask, nasal prong oxygen, or room air, OR
# T-tube breathing, OR
# Tracheostomy mask breathing, OR
# CPAP less than or equal to 5 cm H20 ''without pressure support or IMV assistance.''
<hr>
{{Ventilator Settings in ICU}}
!!!<center>''INITIAL VENTILATOR SETTINGS IN ADULTS IN THE ICU''</center>
<hr>
''Modes''
* CMV/AC in paralyzed patient
* SIMV in nonparalyzed patients with COPD and an intact respiratory effort
* PSV when respiratory effort is intact and respiratory failure is not severe
|! Diagnosis |! Tidal Volume |! RR |! IE Ratio |! PEEP |! FiO,,2,, |
|Normal Lungs| 8 mL/kg | 10-12 | 1:2 | 4 | 1.0 |
|Asthma/COPD| 6 mL/kg | 5-8 | 1:4 | 4 | 1.0 |
|ARDS| 6 mL/kg | 10-12 | 1:2 | 4-15 | 1.0 |
|Hypovolemia| 8 mL/kg | 10-12 | 1:2 | 0-4 | 1.0 |
* Initial TV of 5-8 mL/kg of ideal body weight
* Males: IBW=50 kg + 2.3 kg for each inch over 5 feet
* Females: IBW=45.5 kg + 2.3 for each inch over 5 feet
* ARDS: A/C mode: TV-6mL/kg, PEEP-5, RR-12. Target P plat<30
!!!<center>''VENTILATOR SETTINGS IN CHILDREN''</center>
* Select ‘Adult’ or ‘Infant’ mode
* Infant mode: 0.5 – 30 kg and Adult mode: 10 – 250 kg, however the minimal tidal volume that be delivered in adult mode is 100 ml, so use infant mode up to 20 kg).
* My preferred mode of ventilation is ‘SIMV (PRVC) + Pressure Support’.
* Set Tidal Volume: 5 – 10 ml/kg (7 ml/kg is a reasonable starting point).
* Set I:E Ratio: Normally left at 1:2. In asthma an I:E ratio of 1:3 to 1:5, In neonates: 1:1
* Set Inspiratory Time (Ti)
* < 1 year Ti = 0.6 – 0.8 seconds
* 1 – 5 years Ti = 0.8 – 1.0 seconds
* 5 – 12 years Ti = 1.0 – 1.2 seconds
* >12 years Ti = 1.2 – 1.5 seconds
* Currently the only way to adjust the Ti is to manipulate the ‘I:E’ ratio and the ‘Breath Cycle Time’. Adjusting the ‘I:E ratio’ and the ‘Breath Cycle Time’ will change the ‘Ti’ so this must be checked after any adjustment.
* Set Breath Cycle Time: This is the total time for each breath cycle including inspiration and expiration, so will be determined by both the I:E ratio and Ti. For example if you have set an I:E ratio of 1:2 and you want a Ti of 1 second, you will want an expiratory time of 2 seconds, resulting in a Breath Cycle Time of 3 seconds. If you want an I:E ratio of 1:2 and you want a Ti of 0.6 second, you will want an expiratory time of 1.2 seconds, resulting in a Breath Cycle Time of 1.8 seconds.
* Set the SIMV rate
* < 1 year SIMV Rate = 25 – 30
* 1 – 5 years SIMV Rate = 20 – 25
* 5 – 12 years SIMV Rate = 15 – 20
* >12 years SIMV Rate = 12 – 15
* Set the PEEP: Start with A PEEP of 6 cmH2O in normal lungs. If there is significant collapse/consolidation start with a PEEP of 8 cmH2O and increase as depending on oxygen requirements. Remember excessive PEEP will impair preload due to increased intrathoracic pressure. PEEP is not normally reduced below 5 cmH2O to overcome the work of breathing through the narrow endotracheal tube.
* Set the Oxygen Concentration: Provided it is not contraindicated it is better to start slightly higher to cover the transfer and settling in period on the ventilator and then reduce. Oxygen concentration should be kept <60% where possible in an attempt to avoid toxicity to the lungs.
* Set the trigger: By default the trigger is set to a flow trigger with a sensitivity of 5. This should not be adjusted unless it is causing problems. The ventilator constantly monitors flow in the circuit and when the flow exceeds the set limit it determines that the patient is starting to take a breath and provides support. Turning the knob clockwise increases the flow trigger sensitivity (maximum 10) and makes it easier for the patient to initiate a breath, however also increases the risk of autotriggering (when something else causes the ventilator to think the patient is trying to take a breath when they are not e.g. leak round the tube or in the circuit, water in the circuit or cardiac oscillations).
* Set Pressure Support above PEEP: In ‘SIMV (PRVC) + Pressure Support’ all breaths that the patient initiates are supported. The ventilator will supply the patient with the set ‘SIMV rate’ number of breaths each minute, each of the set tidal volume and each breath lasting for the set Ti. If the patient takes any additional breaths (over and above the set ‘SIMV rate’) these breaths will also be supported, but to a lesser degree. These breaths will be supported with a ‘Pressure Support’ breath above the PEEP (but have no guaranteed tidal volume and no guaranteed Ti). It is important to remember that this is the pressure above PEEP, not the peak pressure.
* Normally start with a set Pressure Support of 12 cmH2O above PEEP, so if PEEP is set at 6 cmH2O this would result in all breaths taken above the set SIMV rate being supported with pressures of 18/6.
* Other Modes of Invasive Ventilation: SIMV (Pressure Control) + Pressure Support’:
* Instead of setting a tidal volume you set ‘Pressure Control above PEEP’ (remember this is the pressure above PEEP, not the peak pressure i.e setting ‘Pressure Control above PEEP’ to 15 and ‘PEEP’ to 6 will result is a ‘Peak Pressure’ of 21). The ventilator will then deliver this pressure for the duration of the inspired time, at the SIMV rate times per minute. The tidal volume delivered is not guaranteed and will vary depending on the compliance of the lungs, so if lung compliance worsens e.g. pneumothorax or collapse, the delivered tidal volume will decrease. This is why it is important to monitor the tidal volume delivered on the ventilator and make sure it is appropriate for the patient and to set tight limits on the minute volume, so the ventilator will alarm appropriately if this is reduced. This mode also supports all breaths and any breaths the patient takes above the set SIMV rate will be supported with a Pressure Support breath, just like in ‘SIMV (PRVC) + Pressure Support’. It is important to note that the ‘PC above PEEP’ can’t be reduced below what is set for ‘PS above PEEP’, nor ‘PS above PEEP’ turned above what is set for ‘PC above PEEP’ (this makes sense as the ‘PC above PEEP’ are meant to be the ‘big breaths’ and the ‘PS above PEEP’ are meant to be the smaller support breaths .
* PS CPAP:This mode just provides pressure support and PEEP. There is no guaranteed tidal volume and no set Ti. Every breath the patient takes is supported. Other methods of ventilation are often weaned to this prior to extubation.
* Weaning Ventilation: As soon as able wean the rate in steps of 5 breaths. Provided the patient is triggering breaths at or above the set rate then all you will be doing is swapping a ‘big breath’ with a guaranteed Ti and tidal volume/Pressure for a smaller ‘Pressure Support’ breath.
* Once you have reached a rate of 5 breaths per minute the next step is to switch the patient to PS CPAP (the patient will already be mostly on ‘PS CPAP’ as only 5 of their breaths will be ‘big breaths’ and all other breaths will be PS breaths. When switching to ‘PS CPAP’, keep the pressure support and PEEP set the same as it was on the previous mode.
* Wean the PS in steps of 2 till a pressure of 6 cmH2O is reached. Wean PEEP to 6 cmH2O. If the patient is stable on PS CPAP ON 6/6 (peak pressure of 12) and there are no contraindications a trial of extubation can be considered.
* You don’t need to wait till a certain point in the patients admission to start to wean them and can start weaning straight away (I would encourage you to ask yourself ‘can I wean’ on every gas you review). Signs that weaning is not being tolerated include increased work of breathing or increased ETCO2/PaCO2 (provided there is no significant increase in WOB or ETCO2 then a blood gas is not required for each weaning step).
!!!<center>''INITIAL VENTILATOR SETTINGS IN CHILDREN''</center>
|!Initial Ventilator Settings|!Premature neonate|!Neonate|!Infant/Child|!Adolescent|
|Mode|Pressure control|Pressure control|Volume control with pressure support|Volume control|
|Rate|40-50|30-40|20-30|12-15|
|PEEP(cm)|3 -6/7|3 - 6|3-5|3-5|
|Inspiratory time(cm)|0.3-0.4|0.3-0.4|0.5-0.6|0.7-0.9|
|PIP|18-22(if HMD)|18 – 20|16-18(in increased ICP); 18-25(if low compliance)|18-25;35(in severe ARDS)|
* Choose the Mode-Control every breath if plan for heavy sedation and muscle relaxation.
* Use SIMV when patient likely to breathe spontaneously. Whenever a breath is supported by the ventilator, regardless of the mode, the limit of the support is determined by: Volume limited: -preset tidal volume; Pressure limited:- preset PIP.
* Fi02-start at 100% and quickly wean down to a level < or 60%(to avoid O2 toxicity)
* I:E ratio – normally set at 1:2-1:3. Higher inspiratory times may be needed to improve oxygenation in difficult situations (inverse ratio ventilation), increasing the risk of air leak. Lower rate and higher expiratory time-1:3-1:4 may be needed in asthma to allow proper expiration due to expiratory obstruction.
* Trigger Sensitivity- set at 0 to -2. Setting above zero is too sensitive; triggered breath from ventilator will be too frequent while too negative a setting will increase work for patient to trigger a ventilator breath.
* Volume Limited-Tidal Volume - 8-10ml/kg with a goal to get to 6-8ml/kg. If leak present around ET tube, set initial tidal volume to 10-12ml/kg.
* Fine tuning after initiation is based on blood gases and oxygen saturations. Do not make more than 2 alterations at any one time.
* For oxygenation –adjust FiO2, PEEP, inspiratory time, PIP(tidal volume) –increase MAP.
* For ventilation -RR, tidal volume(in volume limited) and PIP (in pressure limited mode) can be adjusted.
* PEEP is used to prevent alveolar collapse at end of inspiration, to recruit collapsed lung spaces or to stent open floppy airways.
* What to do if Hypoxemia-
* Increase FiO2 and MAP. Need to find a balance as per clinical situation
* Increase tidal volume if volume limited mode, PEEP, or inspiratory time.
* Increase PIP/PEEP/ITime if pressure limited mode.
* If O2 worse, get CXR to look for air leak, if increasing PEEP decreases saturations, suspect low cardiac output due to tamponade effect of PEEP(treat by fluids and inotropes) or pneumothorax.
* Other measures- normalize cardiac output(by fluids and inotropes), maintain normal Hb and hematocrit(in neonates), maintain normothermia, deepen sedation/consider neuromuscular block.
* Common reasons include for Hypoxemia:
* hypoventilation,
* dead space ventilation(too high a PEEP, decreased CO, pulmonary vasoconstriction),
* increased CO2 production ,
* hyperthermia,
* high carbohydrate diet,
* shivering.
* Inadequate tidal volume delivery(hypoventilation) occurs with ETTube block, malposition, kink, circuit leak, ventilator malfunction.
* Hypercarbia-
* If volume limited: increase tidal volume or rate. If asthma- increase expiratory time to >1:3.
* If pressure limited: increase PIP, decrease Positive End Expiratory Pressure (PEEP), increase rate.
* Decrease dead space( increase Cardiac Output, decrease PEEP, vasodilator, shorten ET tube).
* Decrease CO2 production : cool, increase sedation, decrease carbohydrate load.
* Change endotracheal tube if blocked(may be remedied by suction), kinked, malplaced or out, check proper placement.
* Fix leaks in the circuit, endotracheal tube cuff, humidifier.
* Increasing ventilator parameters may not be acceptable in conditions like:
* 1. Patient ventilator dysynchrony –common causes include hypoventilation , hypoxemia, tube block/kink/malposition, bronchospasm, pneumothorax, silent aspiration, increased oxygen demand/increased CO2 production(in sepsis), inadequate sedation.
* 2. Permissive Hypercapnia-higher paCO2 are acceptable in exchange for limited peak airway pressures, as long as ph>7.25.
* 3. Permissive Hypoxemia- PaO2 of 55-65; SaO2 88-90% is acceptable in exchange for limiting FiO2 <60% , as long as there is no metabolic acidosis. Adequate oxygen content can be maintained by keeping Hct >30%.
* TROUBLE SHOOTING- If patient fighting ventilator and desaturating immediate measures include: -DOPE
* D-Displacement-check tube placement. When in doubt take ET Tube out and start manual ventilation with 100% O2 and with bag and mask.
* O-Obstruction-is the chest rising. Are breath sounds present and equal? Changes in examination?. Atelactasis, treat bronchospasm/tube block/malposition/pneumothorax(consider needle thoracocentesis). Examine circulation:?Shock, ?Sepsis.
* P-Pneumothorax-check ABG, saturation and CXR for pneumothorax and worsening lung condition.
* E-Equipment failure-examine ventilator, ventilator circuit/humidifier/gas source. If no other reason for hypoxemia :- increase sedation/muscle relaxation, put back on the ventilator.
* Duration of ventilation:
* Duration varies by nature of disease process: HMD may take 3days to a week, pneumonia 5-7days, ARDS 10days to 3weeks and neurological illness (eg GBS) from 1week to few months. Postcardiac surgery ventilation may vary from 24hrs to 7days or more and postoperative chest or abdominal cases would vary from 24-48hrs.
* Risk of nosocomial infection increases with ventilation >5-7days. Weaning begins from the moment ventilation is commenced. When FiO2 requirement is down to 40%, improvement in secretions and CXRs, improving clinical condition or primary pathology, muscle relaxant drip is stopped and sedation slowly weaned to get patient moving and awake( may take 24hrs or longer if prolonged use).
* WEANING FROM MECHANICAL VENTILATION- When Weaning:-
* Decrease FiO2 to keep SpO2>94,
* Decrease SIMV rate to 10 (reduce by 3-4breaths/min).
* Decrease the PIP to 20cm of water by reducing 2cm H2O each time/tidal volume to no less than 5ml/kg to prevent atelactasis(usually guided by blood gases).
* Ventilator rate and PIP can be exchanged alternately
* If at any time patients oxygen requirement increases greater than 60% or spontaneous ventilation is fast or distressed with accessory muscle use, patient gets agitated or lethargic, hypercarbia on ABGs, pause weaning and increase support level. Patient may not be ready to wean.
* EXTUBATION CRITERIA-
* SIMV rate of < 10, but can extubate even at rate 20
* Some will need pressure support 5-10 above PEEP with CPAP, while others may need CPAP 5cm water before extubation.
* Infants can usually be extubated from a rate of 5 without any period of endotracheal CPAP before extubation. Infants intubated >3days usually, after extubation, require nasal CPAP, and then nasal prongs.
* there is control of airway reflexes, minimal secretions; patent upper airway(air leak around tube), good breath sounds, minimal O2 requirement <30% with SpO2 >94;. Also, minimal pressure support(5-10 above PEEP), Awake patient, Adequate muscle tone(squeeze examiners fingers/vigorous cough), Minimal/no inotropic support, normal electrolytes and no fluid overload.
* Extubation procedure-
* Keep NBM 4hrs before planned extubation
* Suction endotracheal tube and deflate cuff if using a cuffed tube. Suction the oral cavity and nostrils.
* Suction the NGT before removing to empty the stomach
* Keep oxygen by facemask ready. Nasal cannula can be taped to the face even before extubation to avoid immediate hypoxia/stress upon extubation.
* Correct size mask and bag with O2 must be available with a working laryngoscope and correct size ETTube.
* Nebulisation with beta stimulant/adrenaline to be ready immediate post extubation.
* Intravenous steroids dexamethasone 0.6mg/kg iv(maximum dose of 12mg) stat may be used if indicated by extubation stridor and then continued on prednisone orally at 1mg/kg 8-12hrly OR if prolonged intubation or airway edema can give dexamethasone 24hrs prior to planned extubation at 0.15mg/kg and to be continued for 6-8doses.
* Intravenous frusemide may be needed to achieve a negative fluid balance as interstitial edema can occur in patients with relative fluid overload or even mild myocardial dysfunction as soon as the positive pressure is taken off from the lower airways and the alveoli during extubation.
* NIPPV or a CPAP should also be available to avoid reintubation.
* Do blood gas 20mins after extubation; Post extubation CXR not needed routinely but only if clinically indicated by desaturation or increased work of breathing.
* Ideally, ventilator to be on standby at least 24hrs post extubation.
* Anticipate extubation failure in all patients and parents should be made aware earlier on so that there is no disappointment.
<div id="notecontent">Vertigo may be defined as the <span class="concept" data-cid="9551">false sensation that the body or environment is moving</span>.<br><br>The table below lists the main characteristics of the most important causes of vertigo<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Disorder</b></th><th><b>Notes</b></th></tr></thead><tbody><tr><td><span class="concept" data-cid="9225"><b>ViralLabyrinthitis</b></span></td><td><span class="concept" data-cid="9227">Recent viral infection</span><br> Sudden onset<br> Nausea and vomiting<br> <span class="concept" data-cid="1602">Hearing may be affected</span></td></tr><tr><td><span id="concept_popover_id_9226" class="concept concept-1 trigger-link" data-cid="9226" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative9226'>You've been tested on this concept once, 3 weeks ago, and got the associated question incorrect.</div><br><div id='div_concept_rating9226' class='text-right' style ='font-size:90%;'>You've rated this <span style='color:green'>important</span> <br><span style = 'border-bottom: 5px solid rgb(66,255,0)'>Importance: <b>87</b></span> </div>" data-original-title="Vestibular neuritis stereotypical history: recovering from an upper respiratory tract infections presents with recurrent attacks of vertigo associated with nausea and vomiting. There is no hearing loss or tinnitus"><b>VestibularNeuronitis</b></span></td><td>Recent viral infection<br> Recurrent vertigo attacks lasting hours or days<br> <span class="concept" data-cid="3534">Nystagmus but No hearing loss, Tinnitus or Neurological feature</span></td></tr><tr><td><b>Benign paroxysmal positional vertigo</b></td><td>Gradual onset<br> Triggered by change in head position<br> Each episode lasts 10-20 seconds</td></tr><tr><td><b>Meniere's disease</b></td><td>Associated with hearing loss, tinnitus and sensation of fullness or pressure in one or both ears</td></tr><tr><td><span class="concept" data-cid="9228"><b>VertebroBasilar ischaemia</b></span></td><td>Elderly patient<br> Dizziness on extension of neck</td></tr><tr><td><span class="concept" data-cid="1603"><b>AcousticNeuroma</b></span></td><td>Hearing loss, vertigo, tinnitus<br> Absent corneal reflex is important sign<br> Associated with neurofibromatosis type 2</td></tr></tbody></table></div><br>Other causes of vertigo include<br><ul><li><span class="concept" data-cid="1466">posterior circulation stroke</span></li><li>trauma</li><li>multiple sclerosis</li><li>ototoxicity e.g. gentamicin</li></ul></div>
---
>NAVOMI BABY SUDDENLY DEAF
*Sudden onset - Nau Vomi - LABYrinthitis - Hearing Loss
---
>TORTURE in VESTIBULE: Recurrent Vertigo lasting hours or days
---
>MEN LOST 1 or 2 FULL TINs of beer
*MENiere - Hearing LOSS - FULLness - TINnitus - 1 or BOTH ears
---
>Lateral Labyrinthitis - Vertical Central
*Labyrinthitis is a peripheral cause(also BPPO) of vertigo and would therefore cause lateral rather than vertical nystagmus caused by Central causes(CVA, SOL, Vestibular migraine) - Vestibular neuronitis can cause any
---
| !ACUTE VERTIGO / DIZZINESS DRUGS |<|
|Dimenhydrinate (GRAVOL / SPINFREE)|50 mg QID|
|Cinnarizine (STUGERON)|25-50 mg every six hours|
|Alprazolam|0.5 mg immediate release every eight hours|
|Clonazepam|0.25 to 0.5 mg every eight hours|
|Diazepam|5 to 10 mg every twelve hours|
|Lorazepam|1 to 2 mg every eight hours|
|Domperidone|10-20 mg every six to eight hours|
|Metoclopramide|5 to 10 mg every six hours|
|Ondansetron|8 mg every twelve hours|
|Prochlorperazine|5 to 10 mg every six hours|
|!For acute emergency ward use: |<|
|Metoclopramide|10 to 20 mg IM|
|Ondansetron|4 mg IM or IV|
|Prochlorperazine|5 to 10 mg IM or IV|
|Promethazine|10 to 50 mg IM or IV|
<div id="body_content">
Vestibular schwannomas (sometimes referred to as acoustic neuromas) account for approximately 5% of intracranial tumours and 90% of cerebellopontine angle tumours.<br><br><span class="concept" data-cid="8256">The classical history of vestibular schwannoma includes a combination of vertigo, hearing loss, tinnitus and an absent corneal reflex</span>. Features can be predicted by the <span class="concept" data-cid="2223">affected cranial nerves</span>:<br><ul><li>cranial nerve VIII: vertigo, <span class="concept" data-cid="4572">unilateral sensorineural hearing loss</span>, <span class="concept" data-cid="2419">unilateral tinnitus</span></li><li>cranial nerve V: <span class="concept" data-cid="187">absent corneal reflex</span></li><li>cranial nerve VII: facial palsy</li></ul><br><span class="concept" data-cid="4368">Bilateral vestibular schwannomas are seen in neurofibromatosis type 2</span>.<br><br>Patients with a suspected vestibular schwannoma should be <span class="concept" data-cid="1152">referred urgently to ENT</span>. It should be noted though that the tumours are often slow growing, benign and often observed initially.<br><br><span class="concept" data-cid="4042">MRI of the cerebellopontine angle</span> is the investigation of choice. Audiometry is also important as only 5% of patients will have a normal audiogram.<br><br>Management is with either surgery, radiotherapy or observation.</div>
<div id="notecontent">Vestibular neuronitis is a cause of vertigo that <span class="concept" data-cid="7272">often develops following a viral infection</span>.<br><br>Features<br><ul><li><span id="concept_popover_id_4662" class="concept concept-3-u trigger-link" data-cid="4662" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4662'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating4662' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(101,255,0)'>Importance: <b>80</b></span> </div>" data-original-title="In vestibular neuronitis patients get recurrent vertigo attacks lasting hours to days associated with nausea">recurrent vertigo attacks lasting hours or days</span></li><li><span id="concept_popover_id_4662" class="concept concept-3-u trigger-link" data-cid="4662" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative4662'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating4662' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(101,255,0)'>Importance: <b>80</b></span> </div>" data-original-title="In vestibular neuronitis patients get recurrent vertigo attacks lasting hours to days associated with nausea">nausea and vomiting may be present</span></li><li><span class="concept" data-cid="1600">horizontal nystagmus is usually present</span></li><li><span class="concept" data-cid="1599">no hearing loss</span> or tinnitus</li></ul><br>Differential diagnosis<br><ul><li>viral labyrinthitis</li><li>posterior circulation stroke: the <span class="concept" data-cid="9972">HiNTs exam can be used to distinguish vestibular neuronitis from posterior circulation stroke</span></li></ul><br>Management<br><ul><li><span class="concept" data-cid="988">vestibular rehabilitation exercises are the preferred treatment</span> for patients who experience chronic symptoms</li><li>buccal or intramuscular <span class="concept" data-cid="1601">prochlorperazine</span> is often used to provide rapid relief for severe cases</li><li><span class="concept" data-cid="1663">a short oral course of prochlorperazine</span>, or an antihistamine (cinnarizine, cyclizine, or promethazine) may be used to alleviate less severe cases</li></ul></div>
<div id="notecontent">Labyrinthitis is an inflammatory disorder of the membranous labyrinth, affecting <span class="concept" data-cid="10826">both the vestibular and cochlear end organs</span>. Labyrinthitis can be viral, bacterial or associated with systemic diseases. Viral labyrinthitis is the most common form of labyrinthitis. <br><br>Labyrinthitis should be distinguished from vestibular neuritis as there are important differences: vestibular neuritis is used to define cases in which only the vestibular nerve is involved, hence there is no hearing impairment; Labyrinthitis is used when both the vestibular nerve and the labyrinth are involved, usually resulting in both vertigo and hearing impairment. <br><br>Epidemiology<br><ul><li>The average age of presentation is 40-70 years<sup>2</sup> </li><li>The reported one-year prevalence of all conditions causing vestibular dysfunctions varies between 3.1% and 35.4%<sup>3</sup>. There is a lack of definitive epidemiological data on the incidence and prevalence of labyrinthitis, but viral labyrinthitis is the most common form of labyrinthitis observed in clinical practice. One study reported that 37 of 240 patients presenting with positional vertigo had viral labyrinthitis<sup>4</sup>.</li></ul><br><span id="concept_popover_id_7906" class="concept concept-3-u trigger-link" data-cid="7906" tabindex="0" data-toggle="popover" data-html="true" data-trigger="focus" title="" data-content="<div id='div_concept_narrative7906'>You've been tested on this concept once, just now, and got the associated question correct.</div><br><div id='div_concept_rating7906' class='text-right' style ='font-size:90%;'>You've not yet rated this concept. <br><span style = 'border-bottom: 5px solid rgb(127,255,0)'>Importance: <b>75</b></span> </div>" data-original-title="Acute viral labrynthitis: sudden onset horizontal nystagmus, hearing disturbances, nausea, vomiting and vertigo">Patients typically present with an acute onset of</span>:<br><ul><li>vertigo: not triggered by movement but exacerbated by movement</li><li>nausea and vomiting</li><li>hearing loss: may be unilateral or bilateral, with varying severity</li><li>tinnitus</li><li>preceding or concurrent symptoms of upper respiratory tract infection </li></ul><br>Signs of labyrinthitis:<br><ul><li>spontaneous unidirectional horizontal nystagmus towards the unaffected side</li><li>sensorineural hearing loss: shown by Rinne's test and Weber test</li><li>abnormal head impulse test: signifies an impaired vestibulo-ocular reflex</li><li>gait disturbance: the patient may fall towards the affected side</li><li>normal skew test</li><li>abnormality on inspection of the external ear canal and the tympanic membrane e.g. vesicles in herpes simplex infection</li></ul> <br>Investigations<br><ul><li>diagnosis is largely based on history and examination</li><li>glucose is helpful in excluding hypoglycaemia.</li><li>in most patients with suspected viral labyrinthitis, no other investigation is necessary</li></ul><br>Investigations to consider if the diagnosis is uncertain or suspecting the more sinister causes<br><ul><li>pure tone audiometry can be done to assess hearing loss</li><li>full blood count and blood culture: if systemic infection suspected</li><li>culture and sensitivity testing if any middle ear effusion</li><li>temporal bone CT scan: indicated if suspecting mastoiditis or cholesteatoma </li><li>MRI scan: helpful to rule out causes such as suppurative labyrinthitis or central causes of vertigo </li><li>vestibular function testing: may be helpful in difficult cases and/or determining prognosis </li></ul><br><b>References</b><br>1. Neuhauser HK; Epidemiology of vertigo. Curr Opin Neurol. 2007 Feb20(1):40-6.<br>2. Thompson TL, Amedee R; Vertigo: a review of common peripheral and central vestibular disorders. Ochsner J. 2009 Spring9(1):20-6.<br>3. Koo JW, Chang MY, Woo SY, et al; Prevalence of vestibular dysfunction and associated factors in South Korea. BMJ Open. 2015 Oct 265(10):e008224. doi: 10.1136/bmjopen-2015-008224.<br>4. BalohRW, Honrubia V , Jacobson K; Benign positional vertigo Clinical and oculographic features in 240 cases. Neurology. 1987; 37(3):371-8</div>
In the UK, legal blindness is characterised as vision which is worse than 20/200. Only consultant ophthalmologists have the legal right to certify a patient as legally blind. They do this by filling out a Certificate of Vision Impairment (CVI).
---
Blindness is generally defined as vision < 3/60 in the better eye. Registration is voluntary in England. Patients who are deemed blind are eligible for additional benefits (for example disabled parking badge, reduced television license fee, talking books). A consultant ophthalmologist is needed to make an application to social services
---
Keratomalacia is an eye condition which occurs as a results of Vitamin A deficiency. Symptoms include nightblindness, tunnel vision, dry conjunctiva and decreased visual acuity.
---
Retinitis pigmentosa (RP) is a rare genetic condition which affects the photoreceptors and retinal pigment epithelium causing visual impairment and can lead to blindness. Symptoms include tunnel vision and night blindness
---
Trachoma is caused by Chlamydia trachomatis and is spread mainly by flies in warm climates where it is dry, and dusty. The disease occurs in stages whereby follicles in the upper eyelid grow bigger and eventually rupture leaving scar tissue which distorts the eyelids and causes entropion. The eyelashes scratch against the cornea leading to ulceration and eventually blindness. Treatment is with a course of tetracycline eye drops. Surgery may be required if the disease is advanced.
---
Onchocerciasis (river blindness) is caused transmitted by black flies of the Simulium species. It is common in Africa and affects the skin and eyes. The insects release microfilariae which cause inflammation and fibrosis of the skin and eyes. Treatment is with Ivermectin.
---
<div id="body_content">
The main points for the exam are:<br><ul><li>left homonymous hemianopia means visual field defect to the left, i.e. Lesion of right optic tract</li><li>homonymous quadrantanopias: PITS (Parietal-Inferior, Temporal-Superior)</li><li>incongruous defects = optic tract lesion; congruous defects = optic radiation lesion or occipital cortex</li></ul><br>A congruous defect simply means complete or symmetrical visual field loss and conversely an incongruous defect is incomplete or asymmetric. Please see the link for an excellent diagram.<br><br>Homonymous hemianopia<br><ul><li>incongruous defects: lesion of optic tract</li><li>congruous defects: lesion of optic radiation or occipital cortex</li><li>macula sparing: lesion of occipital cortex</li></ul><br>Homonymous quadrantanopias*<br><ul><li><span class="concept" data-cid="497">superior: lesion of temporal lobe</span></li><li><span class="concept" data-cid="497">inferior: lesion of parietal lobe</span></li><li>mnemonic = PITS (Parietal-Inferior, Temporal-Superior)</li></ul><br>Bitemporal hemianopia<br><ul><li>lesion of optic chiasm</li><li><span class="concept" data-cid="499">upper quadrant defect > lower quadrant defect = inferior chiasmal compression, commonly a pituitary tumour</span></li><li><span class="concept" data-cid="499">lower quadrant defect > upper quadrant defect = superior chiasmal compression, commonly a craniopharyngioma</span></li></ul><br>*this is very much the 'exam answer'. Actual studies suggest that the majority of quadrantanopias are caused by occipital lobe lesions. Please see the link for more details.</div>
---
>PITS
*Parietal Inferior - Temporal Superior
---
>CRANIOpharyngioma is located on CRANIAL (upper) side - Lower side defect
!!!Airway
---
!!!Breathing
N.E.W.S 2
Respiratory rate
Sat % on Oxygen (L/min)
Cyanosed
---
!!!Circulation
Pulse
Blood Pressure
CRT
Cold
Lactate
Sweaty
---
!!!Disability
AVPU / GCS
Pupils
Blood Glucose
---
!!!Extremities
Temp
Purpuric Rash
Pain
<div id="notecontent">The table below summarises vitamin deficiency states<br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th><b>Vitamin</b></th><th><b>Chemical name</b></th><th><b>Deficiency state</b></th></tr></thead><tbody><tr><td>A</td><td>Retinoids</td><td>Night-blindness (nyctalopia)</td></tr><tr><td>B1</td><td>Thiamine</td><td>Beriberi<br><ul><li>polyneuropathy, Wernicke-Korsakoff syndrome</li><li>heart failure</li></ul></td></tr><tr><td>B3</td><td>Niacin</td><td>Pellagra<br><ul><li>dermatitis</li><li>diarrhoea</li><li>dementia</li></ul></td></tr><tr><td>B6</td><td>Pyridoxine</td><td>Anaemia, irritability, seizures</td></tr><tr><td>B7</td><td>Biotin</td><td>Dermatitis, seborrhoea</td></tr><tr><td>B9</td><td>Folic acid</td><td>Megaloblastic anaemia, deficiency during pregnancy - neural tube defects</td></tr><tr><td>B12</td><td>Cyanocobalamin</td><td>Megaloblastic anaemia, peripheral neuropathy, Lemon Tinge Skin(mild jaundice), Glossitis </td></tr><tr><td>C</td><td>Ascorbic acid</td><td>Scurvy<br><ul><li>gingivitis</li><li>bleeding</li></ul></td></tr><tr><td>D</td><td>Ergocalciferol, cholecalciferol</td><td>Rickets, osteomalacia</td></tr><tr><td>E</td><td>Tocopherol, tocotrienol</td><td>Mild haemolytic anaemia in newborn infants, ataxia, peripheral neuropathy</td></tr><tr><td>K</td><td>Naphthoquinone</td><td>Haemorrhagic disease of the newborn, bleeding diathesis</td></tr></tbody></table></div></div>
Vitamin D is a fat-soluble vitamin that plays a key role in calcium and phosphate metabolism. It is converted into the prohormone calcifediol in the liver. Circulating calcifediol is then converted into calcitriol (the biologically active form of vitamin D) in the kidneys.
Sources
* vitamin D2 (ergocalciferol): plants
* vitamin D3 (cholecalciferol): dairy products, can be synthesised by the skin from sunlight
* High levels of vitamin D are contained in the following foods; oily fish such as salmon, sardines, herring and mackerel, red meat, liver, egg yolks, fortified foods such as most fat spreads and some breakfast cereals.
Functions
* increases plasma calcium and plasma phosphate
* increases renal tubular reabsorption and gut absorption of calcium
* increases osteoclastic activity
* increases renal phosphate reabsorption
Consequences of vitamin D deficiency:
* rickets: seen in children
* osteomalacia: seen in adults
<div id="notecontent">Vitiligo is an autoimmune condition which results in the loss of melanocytes and consequent depigmentation of the skin. It is thought to affect around 1% of the population and symptoms typically develop by the age of 20-30 years.<br><br>Features<br><ul><li>well-demarcated patches of depigmented skin</li><li>the peripheries tend to be most affected</li><li>trauma may precipitate new lesions (Koebner phenomenon)</li></ul><br>Associated conditions<br><ul><li>type 1 diabetes mellitus</li><li>Addison's disease</li><li>autoimmune thyroid disorders</li><li>pernicious anaemia</li><li>alopecia areata</li></ul><br>Management<br><ul><li>sunblock for affected areas of skin</li><li>camouflage make-up</li><li>topical corticosteroids may reverse the changes if applied early</li><li>there may also be a role for topical tacrolimus and phototherapy, although caution needs to be exercised with light-skinned patients</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd029b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd029.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd029b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd030b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd030.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd030b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd031b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd031.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.dermnet.org.nz" target="_blank" style="font-size:11px; color:LightGray;">DermNet NZ</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ddd031b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center></div>
!!Von Willebrand's disease
is the most common inherited bleeding disorder. The majority of cases are inherited in an autosomal dominant fashion* and characteristically behaves like a platelet disorder i.e. epistaxis and menorrhagia are common whilst haemoarthroses and muscle haematomas are rare
!!!Investigation
* `prolonged bleeding time`
* `APTT may be prolonged`
* factor VIII levels may be moderately reduced
* defective platelet aggregation with Ristocetin
!!!<center>''VENTRICULAR TACHYCARDIA''</center>
<hr>
* Determine if pt is stable or unstable → use ACLS protocol for any pt w/ unstable VT
* Differentiate VT from nonsustained VT (NSVT), & other causes of WCT
* Differentiate monomorphic from polymorphic VT
* NSVT: VT lasting <30 s
* SVT w/ aberrancy: VT look-alike b/c abnl conduction → WCT.
* Torsades de pointes: Polymorphic VT + prolonged QT
* Evaluation: ECG, rhythm strip, KFT, cardiac markers; CXR;
* Treatment
* Unstable VT: ACLS protocol
* Stable VT: Amiodarone: 150 mg IV load, then 1 mg/min
* Polymorphic VT: Magnesium 2–4 g IV bolus
* Other: Replete electrolytes (Ca, Mg, PO4); treat coincident ischemia if present
<div id="notecontent">Von Willebrand's disease is the <span class="concept" data-cid="5183">most common inherited bleeding disorder</span>. The majority of cases are inherited in an <span class="concept" data-cid="6271">autosomal dominant</span> fashion* and characteristically behaves like a platelet disorder i.e. epistaxis and menorrhagia are common whilst haemoarthroses and muscle haematomas are rare<br><br>Role of von Willebrand factor<br><ul><li>large glycoprotein which forms massive multimers up to 1,000,000 Da in size</li><li>promotes platelet adhesion to damaged endothelium</li><li>carrier molecule for factor VIII</li></ul><br>Types<br><ul><li>type 1: partial reduction in vWF (80% of patients)</li><li>type 2*: abnormal form of vWF</li><li>type 3**: total lack of vWF (autosomal recessive)</li></ul><br><span class="concept" data-cid="10017">Investigation</span><br><ul><li><span class="concept" data-cid="9537">prolonged bleeding time</span></li><li>APTT may be prolonged</li><li>factor VIII levels may be moderately reduced</li><li>defective platelet aggregation with ristocetin</li></ul><br>Management<br><ul><li>tranexamic acid for mild bleeding</li><li><span class="concept" data-cid="602">desmopressin (DDAVP): raises levels of vWF by inducing release of vWF from Weibel-Palade bodies in endothelial cells</span></li><li>factor VIII concentrate</li></ul><br>*type 2A VWD is caused by defective platelet adhesion due to decreased high molecular weight VWF multimers (i.e. the VWF protein is too small). Type 2B is characterised by a pathological increase of VWF-platelet interaction. Type 2M is caused by a decrease in VWF-platelet interaction (not related to loss of high molecular weight multimers). Type 2N is caused by abnormal binding of the VWF to Factor VIII. There is no clear correlation between symptomatic presentation and type of VWD however common themes amongst patients include excessive mucocutaneous bleeding, bruising in the absence of trauma and menorrhagia in females. <br><br>**type 3 von Willebrand's disease (most severe form) is inherited as an autosomal recessive trait. Around 80% of patients have type 1 disease</div>
---
*APTT may be prolonged
---
<div id="body_content">
The following is based on the BNF guidelines, which in turn take into account the British Committee for Standards in Haematology (BCSH) guidelines. <br><br><div class="table-responsive"><table class="tlarge table table-striped table-bordered" data-role="table" id="tableid1"><thead><tr><th>Situation</th><th>Management</th></tr></thead><tbody><tr><td><span class="concept" data-cid="8678"><b>Major bleeding</b></span></td><td>Stop warfarin<br>Give intravenous vitamin K 5mg<br>Prothrombin complex concentrate - if not available then FFP*</td></tr><tr><td><span class="concept" data-cid="8679"><b>INR > 8.0<br>Minor bleeding </b></span></td><td>Stop warfarin<br>Give intravenous vitamin K 1-3mg<br>Repeat dose of vitamin K if INR still too high after 24 hours<br>Restart warfarin when INR < 5.0</td></tr><tr><td><span class="concept" data-cid="8680"><b>INR > 8.0<br>No bleeding</b></span></td><td>Stop warfarin<br>Give vitamin K 1-5mg by mouth, using the intravenous preparation orally<br>Repeat dose of vitamin K if INR still too high after 24 hours<br>Restart when INR < 5.0</td></tr><tr><td><span class="concept" data-cid="8681"><b>INR 5.0-8.0<br>Minor bleeding</b></span></td><td>Stop warfarin<br>Give intravenous vitamin K 1-3mg<br>Restart when INR < 5.0</td></tr><tr><td><span class="concept" data-cid="8682"><b>INR 5.0-8.0<br>No bleeding</b></span></td><td>Withhold 1 or 2 doses of warfarin<br>Reduce subsequent maintenance dose</td></tr></tbody></table></div><br>*as FFP can take time to defrost prothrombin complex concentrate should be considered in cases of intracranial haemorrhage</div>
|!INR|!Major Bleeding|!Minor Bleeding|!No Bleeding|!Follow up|
|!5-8|5 IV & PT complex|3 IV|Withhold 1 or 2 doses|restart when INR<5|
|!8 and above|~|~|3 Oral|Rpt Vit K in 24hr|
Bleeding = IV <br>
Major = 5 <br>
Minor = 3 <br>
```
The peri-operative management of anti-coagulation can be difficult. Interruption of anticoagulation temporarily increases thromboembolic risk whilst continuing anticoagulation increases the risk of bleeding associated with invasive procedures. For conditions such as atrial fibrillation and deep vein thrombosis the risk of a thromboembolic event whilst still high is manageable with a bridging agent such as low molecular weight heparin.
The half life of low molecular weight heparin is about 4 hours so it can safely be given the night before for an operation the next day. Unfractionated heparin has a half life of two hours so the infusion can be continued until 4 hours before surgery enabling therapeutic anticoagulation up to the day of surgery. For conditions that have a high thromboembolic risk, intravenous heparin should be used peri-operatively. Metallic heart valves fall into this high risk group. The risk of thrombosis is even higher with mitral valves compared to aortic valves.
```
!!!<center>''WEAKNESS''</center>
<hr>
* ''Unilateral weakness:'' Ischemic stroke, Intracerebral hemorrhage, Subarachnoid hemorrhage (SAH)
* ''Bilateral weakness:'' Brainstem stroke, Spinal cord inflammation or compression, Guillain-Barré syndrome (GBS), Myasthenia gravis (MG), Organophosphate poisoning, Botulism, Alcoholic myopathy, Myositis
* ''Other:'' Hypoglycemia, Periodic paralysis (Hypo/hyperkalemia, hypo/hypercalcemia, hypomagnesemia, or hypophosphatemia)
* ''Generalized weakness:'' Sepsis, Acute coronary syndrome (ACS), Adrenal insufficiency, Hypothyroidism, Anemia, Dehydration or hypovolemia, Medications – beta blockers, diuretics, laxatives, chemotherapeutic agents, isoniazid, opioids, and alcohol. glucocorticoids, statins, antimalarial drugs, antipsychotic drugs, colchicine, antiretrovirals, alcohol, and cocaine.
* Particularly in the elderly, infection, cardiovascular disease, and dehydration must be considered as possible causes of weakness.
<hr>
<center>''Approach to the adult with weakness in the emergency department''</center>
<hr>
<center>
<img src="https://www.dropbox.com/s/ai0rvjsi877esaw/weakness.gif?raw=1">
</center>
* The first important step in this approach is to determine whether the weakness is unilateral (asymmetric) or bilateral (symmetric), and to look closely for signs of central neurologic involvement.
* If unilateral weakness is identified, look carefully for signs suggestive of cortical, subcortical (lacunar), or brainstem lesions. If these are absent, a peripheral process (radiculopathy, plexopathy, or peripheral nerve injury) most likely accounts for the patient's symptoms.
* Key questions for assessing unilateral weakness include:
* Are cortical signs present (eg, aphasia, neglect, agnosia, apraxia)? If so, pathology lies in the cerebral cortex.
* Is the face involved (eg, facial droop)? Unilateral facial weakness suggests a lesion above the spinal cord, either in the brainstem or cortex (or with Bell’s palsy a peripheral nerve).
* Is there a myotomal pattern to the distribution of weakness? In such cases, familiarity with important cervical and lumbosacral myotomes helps to localize the lesion
* Is the description of weakness consistent with a particular peripheral nerve?
* If bilateral weakness is identified, consider the patient's mental status and look carefully for signs of upper or lower motor neuron lesions and associated abnormalities.
* Key questions for assessing bilateral weakness include:
* Is the patient’s mental status depressed? Central nervous system (CNS) pathology that causes bilateral weakness is usually accompanied by diminished mental status, unless it is found in the spinal cord.
* Which limbs are involved? Lesions involving both the upper and lower extremities are located more proximally in the spinal cord
* Is there sensory involvement? A sensory deficit demarcated by a specific dermatome suggests spinal cord pathology, while more diffuse sensory findings such as paresthesias may be an early sign of a polyneuropathy.
* Is there bladder involvement? Bladder dysfunction suggests a myelopathy.
* Does weakness primarily involve proximal or distal muscles? Involvement primarily of proximal muscles suggests a myopathy, while involvement of distal muscles suggests a polyneuropathy.
* Is there eye muscle or “bulbar” weakness (involving the tongue, jaw, face, or larynx)?
* Diseases affecting the neuromuscular junction frequently present with ptosis, diplopia, or bulbar weakness.
* Does the degree of weakness fluctuate? A fatiguing pattern to the weakness, suggested by worsening with repeated activity such as chewing or maintaining upward gaze, suggests a process involving the neuromuscular junction, such as myasthenia gravis; acute attacks of weakness lasting a few hours and then spontaneously resolving suggest periodic paralysis.
* NCCT head for stroke, SAH, etc
* Generalized weakness: CBC, KFT, RBS, ECG, CXR
* Brainstem and cerebellar lesions are best seen with magnetic resonance imaging (MRI),
* CSF analysis is indicated when Guillain-Barré syndrome (GBS), myelitis, or demyelinating peripheral neuropathy is suspected.
!!Granulomatosis with polyangiitis (Wegener's granulomatosis)
<div id="body_content">
Granulomatosis with polyangiitis is now the preferred term for Wegener's granulomatosis. It is an autoimmune condition associated with a necrotizing granulomatous vasculitis, affecting both the upper and lower respiratory tract as well as the kidneys.<br><br><span class="concept" data-cid="2785">Features</span><br><ul><li>upper respiratory tract: epistaxis, <span class="concept" data-cid="7220">sinusitis</span>, nasal crusting</li><li>lower respiratory tract: dyspnoea, <span class="concept" data-cid="7219">haemoptysis</span></li><li><span class="concept" data-cid="7223">rapidly progressive glomerulonephritis</span> ('pauci-immune', 80% of patients)</li><li><span class="concept" data-cid="8744">saddle-shape nose deformity</span></li><li>also: vasculitic rash, eye involvement (e.g. proptosis), cranial nerve lesions</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd902b.png"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd902.png"></a></td></tr><tr><td valign="top" align="left"></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/pdd902b.png"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Comparison of granulomatosis with polyangiitis and Churg-Strauss syndrome</div><br>Investigations<br><ul><li><span class="concept" data-cid="8486">cANCA positive in > 90%</span>, pANCA positive in 25%</li><li>chest x-ray: wide variety of presentations, including cavitating lesions</li><li>renal biopsy: <span class="concept" data-cid="7217">epithelial crescents in Bowman's capsule</span></li></ul><br>Management<br><ul><li>steroids</li><li>cyclophosphamide (90% response)</li><li>plasma exchange</li><li>median survival = 8-9 years</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb180b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb180.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb180b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Chest x-ray from a young patient with granulomatosis with polyangiitis. Whilst the changes are subtle it demonstrates a number of ill-defined nodules the largest of which projects over the dome of the right hemidiaphragm. This nodule appears to have a central lucency suggesting cavitation </div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb181b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb181.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://www.radiopaedia.org/" target="_blank" style="font-size:11px; color:LightGray;">Radiopaedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/xrb181b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">CT of the same patient showing the changes in a much more obvious way, confirming the presence of at least 2 nodules, the larger of the two having a large central cavity and and air-fluid level</div></div>
---
>Wegeners C shaped NOSE RING - CCC
*NOSE Bleeds - NOSE Crusts - Saddle shaped NOSE - Sinusitis - LRTI - Hemoptysis - ''C''-[[ANCA]] - ''C''orticosteroids - ''C''yclophosphamide
---
>WEGeners WEGam
*RAPIDLY Progressive [[RPGN]]
---
!!Wernicke's encephalopathy
is a neuropsychiatric disorder caused by thiamine deficiency which is most commonly seen in alcoholics. Rarer causes include: persistent vomiting, stomach cancer, dietary deficiency. A classic triad of ophthalmoplegia/nystagmus, ataxia and confusion may occur. In Wernicke's encephalopathy petechial haemorrhages occur in a variety of structures in the brain including the mamillary bodies and ventricle walls
Features
* nystagmus (the most common ocular sign)
* ophthalmoplegia
* ataxia
* confusion, altered GCS
* peripheral sensory neuropathy
Investigations
* decreased red cell transketolase
* MRI
Treatment is with urgent replacement of thiamine
;Relationship with Korsakoff syndrome
* If not treated Korsakoff's syndrome may develop as well. This is termed Wernicke-Korsakoff syndrome and is characterised by the addition of antero- and retrograde amnesia and confabulation in addition to the above symptoms.
---
>WERNICKE WADDLING DUCK with CONFUSED WANDERING EYES
*WerNicke's - Ataxia - Confusion - Nystagmus - Ophthalmoplegia
---
>KORSAKOFF CONFABULATION
*Korsakoff's - Amnesia - Confabulations
---
!!!<center>''WHEEZING''</center>
<hr>
//You are asked to evaluate a recently admitted patient who develops respiratory distress and wheezing.//
* Immediate Questions
* What are the vital signs? A respiratory rate greater than 30/min may indicate the need for immediate treatment.
* Associated hypotension may suggest an anaphylactic reaction, an acute myocardial infarction (MI) with pulmonary edema, or a pulmonary embolism (PE).
* Fever may point to an underlying infection, PE, or MI.
* Were any diagnostic tests recently performed or medicines administered?
* Why was the patient admitted?
* Acute pulmonary edema may accompany an MI, and aspiration can result from gastric outlet obstruction secondary to a gastric ulcer.
* Pulmonary edema is one of the more common nonasthmatic causes of wheezing.
* Similarly, aspiration can lead to stridor or wheezing.
* Is there a history of asthma?
* Does the patient have any allergies to medications?
''Diffuse wheezing causes''
# Acute bronchospasm. asthma, exacerbation of (COPD), anaphylactic reaction
# Aspiration.
# Cardiogenic pulmonary edema. Get CXR
# PE.
''Stridor (upper airway wheezing)''
# Laryngospasm. anaphylactic reaction or secondary to aspiration.
# Laryngeal or tracheal tumor. A history of dysphagia, hoarseness, cough, or weight loss and anorexia may be present.
# Epiglottitis. The patient is often unable to speak or to swallow secretions.
# Foreign body aspiration
# Vocal cord dysfunction. Bilaterally paralyzed vocal cords may result in severe stridor and dyspnea.
''Localized wheezing''
# Tumors.
# Mucous plugging
# Aspirated foreign body
* Get ABG, CBC, ECG, CXR
<hr>
<center>''Bronchospasm (asthma, COPD, allergic reaction)''</center>
<hr>
* Methylprednisolone (Solu-Medrol) 60–125 mg IV Q 6 hr.
* Nebulized Salbutamol 0.5 mL of 0.5% solution (2.5 mg) in 2.5 mL normal saline stat and every 20 minutes for 3 doses, then every 1–4 hours as needed.
* Alternatively, four puffs albuterol metered-dose inhaler via spacer device may be given every 20 minutes up to 4 hours (12 doses), then every 1–4 hours as needed.
<hr>
<center>''Stridor''</center>
<hr>
* Methylprednisolone 40 mg IV stat
* Nebulized racemic epinephrine. Give 0.5 mL in 3 mL normal saline.
* Continuous positive airway pressure (CPAP). Give 10–15 cm H2O applied continuously; if ventilatory failure is suspected, consider bilevel positive airway pressure (BiPAP) instead at 15/10 cm H2O.
* Intubation or tracheostomy. If there is no response to the above measures.
<hr>
<center>''Pulmonary edema''</center>
<hr>
* Furosemide (Lasix) 20–80 mg IV
* Nitroglycerin. nitroglycerin drip 10–20 μg/min and increase by 5–10 μg every 10 minutes.
* Afterload reduction. captopril or enalapril, or any other ACE inhibitor.
* Intravenous morphine. For venodilation and to relieve anxiety. Morphine may suppress respiratory drive and cause further respiratory compromise, necessitating intubation.
* Oxygen. Start with 100% oxygen by non rebreather mask, as long as the patient is not a carbon dioxide retainer.
* CPAP (10 cm) or BiPAP (12/8 cm).
<div id="body_content">
Whipple's disease is a rare multi-system disorder caused by <i>Tropheryma whippelii</i> infection. It is more common in those who are HLA-B27 positive and in <span class="concept" data-cid="3468">middle-aged men</span>.<br><br><span class="concept" data-cid="9916">Features</span><br><ul><li>malabsorption: diarrhoea, weight loss</li><li>large-joint arthralgia</li><li>lymphadenopathy</li><li>skin: hyperpigmentation and photosensitivity</li><li>pleurisy, pericarditis</li><li>neurological symptoms (rare): ophthalmoplegia, dementia, seizures, ataxia, myoclonus</li></ul><br>Investigation<br><ul><li><span class="concept" data-cid="421">jejunal biopsy shows deposition of macrophages containing Periodic acid-Schiff (PAS) granules</span> </li></ul><br>Management<br><ul><li>guidelines vary: oral co-trimoxazole for a year is thought to have the lowest relapse rate, sometimes preceded by a course of IV penicillin</li></ul></div>
!!Whooping cough (pertussis)
is an infectious disease caused by the Gram-negative bacterium Bordetella pertussis. It typically presents in children. There are around 1,000 cases are reported each year in the UK.
;Immunisation
* infants are routinely immunised at 2, 3, 4 months and 3-5 years. Newborn infants are particularly vulnerable, which is why the vaccination campaign for pregnant women was introduced
* neither infection nor immunisation results in lifelong protection - hence adolescents and adults may develop whooping cough despite having had their routine immunisations
;Features, 2-3 days of coryza precede onset of:
* coughing bouts: usually worse at night and after feeding, may be ended by vomiting & associated central cyanosis
* inspiratory whoop: not always present (caused by forced inspiration against a closed glottis)
* infants may have spells of apnoea
* persistent coughing may cause subconjunctival haemorrhages or even anoxia leading to syncope & seizures
* symptoms may last 10-14 weeks* and tend to be more severe in infants
* marked lymphocytosis
;Diagnostic criteria
* Whooping cough should be suspected if a person has an acute cough that has lasted for 14 days or more without another apparent cause, and has one or more of the following features:
* Paroxysmal cough.
* Inspiratory whoop.
* Post-tussive vomiting.
* Undiagnosed apnoeic attacks in young infants.
;Diagnosis
* per nasal swab culture for Bordetella pertussis - may take several days or weeks to come back
* PCR and serology are now increasingly used as their availability becomes more widespread
;Management
* infants under 6 months with suspect pertussis should be admitted
* in the UK pertussis is a notifiable disease
* an oral macrolide (e.g. clarithromycin, azithromycin or erythromycin) is indicated if the onset of the cough is within the previous 21 days to eradicate the organism and reduce the spread
* household contacts should be offered antibiotic prophylaxis
* antibiotic therapy has not been shown to alter the course of the illness
* school exclusion: 48 hours after commencing antibiotics (or 21 days from onset of symptoms if no antibiotics )
;Complications
* subconjunctival haemorrhage
* pneumonia
* bronchiectasis
* seizures
!!Vaccination of pregnant women
In 2012 there was an outbreak of whooping cough (pertussis) which resulted in the death of 14 newborn children. As a temporary measure, a vaccination programme was introduced in 2012 for pregnant women. This has successfully reduced the number of cases of whooping cough (the vaccine is thought to be more than 90% effective in preventing newborns developing whooping cough). It was however decided in 2014 to extend the whooping cough vaccination programme for pregnant women. This decision was taken as there was a 'great deal of uncertainty' about the timing of future outbreaks.
`Women who are between 20-32 weeks pregnant will be offered the vaccine.`
*weeks, not days
<div id="body_content">
Wilms' nephroblastoma is one of the most common childhood malignancies. It typically presents in children under 5 years of age, with a median age of 3 years old.<br><br>Associations<br><ul><li>Beckwith-Wiedemann syndrome</li><li>as part of WAGR syndrome with Aniridia, Genitourinary malformations, mental Retardation</li><li>hemihypertrophy</li><li>around one-third of cases are associated with a loss-of-function mutation in the WT1 gene on chromosome 11</li></ul><br>Features<br><ul><li>abdominal mass (most common presenting feature)</li><li>painless haematuria</li><li>flank pain</li><li>other features: anorexia, fever</li><li>unilateral in 95% of cases</li><li>metastases are found in 20% of patients (most commonly lung)</li></ul><br>Referral<br><ul><li>children with an unexplained enlarged abdominal mass in children - possible Wilm's tumour - arrange <span class="concept" data-cid="2124">paediatric review with 48 hours</span></li></ul><br>Management<br><ul><li>nephrectomy</li><li>chemotherapy</li><li>radiotherapy if advanced disease</li><li>prognosis: good, 80% cure rate</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb076b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb076.jpg"></a></td></tr><tr><td valign="top" align="left"><span style="font-size:11px; color:LightGray;">© Image used on license from PathoPic</span></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/usb076b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><div class="imagetext">Histological features include epithelial tubules, areas of necrosis, immature glomerular structures, stroma with spindle cells and small cell blastomatous tissues resembling the metanephric blastema</div></div>
Wilson's disease is an autosomal recessive disorder characterised by excessive copper deposition in the tissues. Metabolic abnormalities include increased copper absorption from the small intestine and decreased hepatic copper excretion. Wilson's disease is caused by a defect in the ATP7B gene located on chromosome 13.
The onset of symptoms is usually between 10 - 25 years. Children usually present with liver disease whereas the first sign of disease in young adults is often neurological disease
Features result from excessive copper deposition in the tissues, especially the brain, liver and cornea:
* liver: hepatitis, cirrhosis
* neurological: basal ganglia degeneration, speech, behavioural and psychiatric problems are often the first manifestations. Also: asterixis, chorea, dementia, parkinsonism
* Kayser-Fleischer rings
* renal tubular acidosis (esp. Fanconi syndrome)
* haemolysis
* blue nails
Diagnosis
* reduced serum caeruloplasmin
* reduced serum copper (counter-intuitive, but 95% of plasma copper is carried by ceruloplasmin)
* increased 24hr urinary copper excretion
Management
* penicillamine (chelates copper) has been the traditional first-line treatment
* trientine hydrochloride is an alternative chelating agent which may become first-line treatment in the future
* tetrathiomolybdate is a newer agent that is currently under investigation
---
>Wilson's Fan
*Wilson's associated with Renal Tubular Acidosis(Fanconi Syndrome)
---
>Rings in eyes - Blue colored nails
| !WORM INFESTATION DRUGS |<|
|Albendazole|Tab Zental 400 mg STAT|
|Tape worm|Tab Niclosan (Niclosamide) 500 mg 4 tab STAT in morning on empty stomach or <br>Tab Zental 400 mg BD 3 days|
|Round worm|Piperazine citrate 30 ml at bedtime on 3 consecutive days (75 mg/kg/day)|
|Hydatid cyst|Tab Zental 12 mg/kg/d for 1 month|
!!!<center>''WOUND MANAGEMENT''</center>
<hr>
* Time of event (>12 h → irrigate/heal by secondary intention or delayed 1° closure, face/significant soft tissue defect → 1° closure in <24 h), location (suture selection/time until removal), mechanism (↑ risk FB/contamination), tetanus (booster if >5 y)
* Inspect for FB, wound approximation
* Palpate Pulses, strength, sensation distal to injury
* Plain films only if FB/fracture suspected
* Treatment
* Hemostasis: Direct pressure, lidocaine w/ epinephrine if needed (avoid in digits, nose, ears, penis), proximal tourniquet
* Analgesia: Use regional blocks when possible (↓ wound distortion/amount of analgesic needed)
* Irrigation: >500 cc NS (no benefit over tap water) with 18 g IV catheter in 50 cc syringe), caution on delicate tissues (eye lids)
* Exploration (through a full ROM): FB, tendons (including in position of injury), fascial planes
* Repair:
<center>
|!Suture Choice|<|<|
|!Body Part|!Suture Size|!Remove Sutures on Day|
|!SCALP| Staples or 4-0 | 7 |
|!FACE| 5-0, 6-0 | 4-5 |
|!CHEST| 3-0, 4-0 | 7–10 |
|!BACK| 3-0, 4-0 | 10–14 |
|!FOREARM| 4-0, 5-0 | 10–14 |
|!FINGER/HAND| 5-0 | 7–10 |
|!LOWER EXTREMITY| 4-0, 5-0 | 10–12 |
</center>
* Abx: Not routinely required (must be given for certain bites)
* Hand flexor tendon lacerations: Emergent 1° repair by hand surgeon, splint (wrist 30° flexion, MP joint 70° flexion, DIP/PIP 10° flexion)
* Hand extensor tendon lacerations: Zone IV & VI repair 1° in ED, splint, hand surgery f/u
* Not all FB require removal (deep, small, inert, asymptomatic, away from vital structures), removal (significant pain, functional impairment, reactive, contamination, near vital structures, cosmetic concerns): May require wound extension, irrigation, fine tip forceps
* Fingertip Wounds:
* Amputation: Distal to DIP joint → wound care/secondary intention (may need to trim back bone/should always be covered by soft tissue)/abx, significant bone/soft tissue loss → emergent hand surgery consult
* Subungual hematoma: Large → nail trephination, small → no intervention
* Nail bed laceration: 1° repair → remove nail, repair w/ 6-0 absorbable suture, replace nail into nail fold (suture or secure w/ tape) to splint nail bed/maintain nail fold (nail growth → 70–160 d)
<hr>
{{Suture Basics}}
<div id="notecontent">Wolff-Parkinson White (WPW) syndrome is caused by a congenital accessory conducting pathway between the atria and ventricles leading to a atrioventricular re-entry tachycardia (AVRT). As the accessory pathway does not slow conduction AF can degenerate rapidly to VF<br><br>Possible ECG features include:<br><ul><li>short PR interval</li><li>wide QRS complexes with a slurred upstroke - 'delta wave'</li><li>left axis deviation if right-sided accessory pathway*</li><li>right axis deviation if left-sided accessory pathway*</li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg059b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg059.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg059b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg059c.jpg" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">ECG showing short PR interval associated with a slurred upstroke (delta wave). Note the non-specific ST-T changes which are common in WPW and may be mistaken for ischaemia. The left axis deviation means that this is type B WPW, implying a right-sided pathway</div><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg060b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg060.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">© Image used on license from </span><a href="http://hqmeded-ecg.blogspot.com/" target="_blank" style="font-size:11px; color:LightGray;">Dr Smith, University of Minnesota</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg060b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a><a border="0" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/ecg060c.jpg" target="_blank"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass2.png"></a></td></tr></tbody></table></center><div class="imagetext">Further example showing a characteristic delta wave</div><br><br>Differentiating between type A and type B**<br><ul><li>type A (left-sided pathway): dominant R wave in V1</li><li>type B (right-sided pathway): no dominant R wave in V1 </li></ul><br><center><table><tbody><tr><td align="left" colspan="2"><a data-fancybox="" class="fancybox" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb012b.jpg"><img class="ajaximage" src="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb012.jpg"></a></td></tr><tr><td valign="top" align="left"> <span style="font-size:11px; color:LightGray;">Image sourced from </span><a href="http://en.wikipedia.org/wiki/Wolff Parkinson White syndrome" target="_blank" style="font-size:11px; color:LightGray;">Wikipedia</a></td><td align="right"><a data-fancybox="" class="fancybox lbmagglasslink" rel="group" href="https://d32xxyeh8kfs8k.cloudfront.net/images_Passmedicine/swb012b.jpg"><img src="https://d32xxyeh8kfs8k.cloudfront.net/css/images/mag_glass.png"></a></td></tr></tbody></table></center><br>Associations of WPW<br><ul><li>HOCM</li><li>mitral valve prolapse</li><li>Ebstein's anomaly</li><li>thyrotoxicosis</li><li>secundum ASD</li></ul><br>Management<br><ul><li>definitive treatment: radiofrequency ablation of the accessory pathway</li><li>medical therapy: sotalol***, amiodarone, flecainide</li></ul><br>*in the majority of cases, or in a question without qualification, Wolff-Parkinson-White syndrome is associated with left axis deviation<br><br>**there is a rare type C WPW, WPW in which the delta waves are upright in leads V1-V4 but negative in leads V5-V6<br><br>***sotalol should be avoided if there is coexistent atrial fibrillation as prolonging the refractory period at the AV node may increase the rate of transmission through the accessory pathway, increasing the ventricular rate and potentially deteriorating into ventricular fibrillation</div>
Characteristic xanthomata seen in hyperlipidaemia:
Palmar xanthoma
* remnant hyperlipidaemia
* may less commonly be seen in familial hypercholesterolaemia
Eruptive xanthoma are due to high triglyceride levels and present as multiple red/yellow vesicles on the extensor surfaces (e.g. elbows, knees)
Causes of eruptive xanthoma
* familial hypertriglyceridaemia
* lipoprotein lipase deficiency
Tendon xanthoma, tuberous xanthoma, xanthelasma
* familial hypercholesterolaemia
* remnant hyperlipidaemia
Xanthelasma are also seen without lipid abnormalities
Management of xanthelasma, options include:
* surgical excision
* topical trichloroacetic acid
* laser therapy
* electrodesiccation
---
>Glycerol Erupts
*Triglyceridemia cause Eruptive xanthoma
---
;Males
* Androgen insensitivity syndrome
* Bruton
* Colour blindness(kshatriya males)-AlbinO(ocular albinism) - RetinitisPigmentosa
* Becker-Duchenne
* G6PD (mediterranean males)
* Hunter Fabry
* Lesch-Nyhan
* Wiskott-Aldrich
* OrnithTC
* HemoPhilia A,B(Royal males)
* Nephrogenic DI
The following diseases have varying patterns of inheritance, with the majority being in an X-linked recessive fashion:
* Chronic granulomatous disease (in > 70%)
Features
* perioral dermatitis: red, crusted lesions
* acrodermatitis
* alopecia
* short stature
* hypogonadism
* hepatosplenomegaly
* geophagia (ingesting clay/soil)
* cognitive impairment